期末考试要用哦,否则谁会愿意去踩这么多坑。 qaqhtml
龙梦 Fedora28 中有 codeblocks 17.12,可是 Ctrl-v 粘贴会闪退,致使压根不能用。Bing了一下发现这实际上是 codeblocks 的一个已知 bug,并且看起来已经被修复。因而我冒着可能引入更多 bug 的风险,编译安装 20.03 。其实不光光是编译,并且会生成 rpm 包,这样将来从新安装和卸载都十分方便。c++
我所碰到的,编译中发生的奇奇怪怪的问题,则写在了最后的“一个坑”中。bash
若是有须要软件包的能够在这里下载app
CPU: Loongson-3A R4 (Loongson-3A4000) @ 4x 1.8GHz
OS: Fedora28 for loongson KDE 5.1
Kernel: mips64 Linux 5.4.38-1.fc28.lemote.mips64el
gcc: version 8.4.0 20200304 (Red Hat 8.4.0-0.21) (GCC)ui
在 sourceforge 下载
codeblocks-20.03.tar.bz2 获得源码, tar -jxvf codeblocks-20.03.tar.bz2
解压获得 codeblocks.spec.fedora ,放在 SPECS 下。.net
注意这里使用 codeblocks.spec.fedora
而不是 codeblocks.spec
。插件
感谢福莱的指导~debug
将 virtual void InitDialog(){ asm("int3");}
改成 virtual void InitDialog(){ asm("break");}
code
从新打包,并放到 SOURCES 目录下。orm
tar -jcvf codeblocks-20.03.tar.bz2 codeblocks-20.03 cp -v codeblocks-20.03.tar.bz2 ../SOURCES/
+ 取消编译部分组件
为啥不编译,还不是由于太菜不会改。
文件 src/plugins/contrib/Makefile.am:38 ,注释掉如下语句:
MAYBE_DRAGSCROLL=dragscroll appdata
#不编译 dragscroll 插件
缘由是 src/plugins/contrib/dragscroll/dragscrollcfg.h:38 有一段 x86 汇编 asm("int3");
+ 修改 spec`
打开 codeblocks.spec.fedora ,删除下列行:
# line 276
%{pkgdatadir}/dragscroll.zip
# line 320
%{plugindir}/libdragscroll.so
rpmbuild -bb codeblocks.spec.fedora
运行之,会自动检查缺乏的依赖,具体以上面命令的输出为准。
sudo dnf install astyle-devel boost-devel bzip2-devel gamin-devel hunspell-devel libICE-devel libtool squirrel-devel tinyxml-devel wxGTK-devel zlib-devel
这一部分彷佛是我瞎搞致使的。我以后在虚拟机中从新编译了一次,没有遇到和环境变量有关的任何问题。若是遇到了相似的问题极可能是编译依赖的包没有安装全,才触发了一系列问题。
为了解决各类错误……下面是对于不一样错误的记录,实际使用时只要把全部 export xxx
在当前终端下运行一遍便可。
#/usr/lib64/pkgconfig/gtk+-2.0.pc export GTK_CFLAGS="-I/usr/include/gtk-2.0" export GTK_LIBS="-L/usr/lib64 -lgtk-x11-2.0" #/usr/lib64/pkgconfig/gdk-2.0.pc export GDK_LIBS="-L/usr/lib64 -lgdk-x11-2.0" export GDK_CFLAGS="-I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include" #/usr/lib64/pkgconfig/fontconfig.pc export FONTCONFIG_LIBS="-L/usr/lib64 -lfontconfig" export FONTCONFIG_CFLAGS="-I/usr/include"
查看gcc默认include路径 gcc -v -x c -E /dev/null
。
其实缘由很简单,好比一个头文件一般是在 /usr/include/pango
下,实际却在 /usr/include/pango-1.0/pango
下,因此须要专门在环境变量中设置。
export CPLUS_INCLUDE_PATH=/usr/include/c++/8:/usr/include:/usr/include/gtk-2.0:/usr/include/glib-2.0:/usr/lib64/glib-2.0/include:/usr/include/cairo:/usr/include/pango-1.0:/usr/lib64/gtk-2.0/include/:/usr/include/gdk-pixbuf-2.0:/usr/include/atk-1.0 export C_INCLUDE_PATH=/usr/include:/usr/include/gtk-2.0:/usr/include/glib-2.0:/usr/lib64/glib-2.0/include:/usr/include/cairo:/usr/include/pango-1.0:/usr/lib64/gtk-2.0/include/:/usr/include/gdk-pixbuf-2.0:/usr/include/atk-1.0
在编译过程当中, Makefile 生成后作,时间充裕。限于水平,我没有更好的办法。
少了一个 flag,会致使连接失败
CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
改成
CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -lgobject-2.0 -o $@
rpmbuild -bb codeblocks.spec.fedora
也就半个小时吧,编译成功后能够在 “RPMS” 目录下找到所得的包。
因为个人机器使用的是已经服役多年的机械硬盘,若是使用固态硬盘应该并不须要半个小时。以后我又在龙芯的虚拟机中编译了一次,很是惊人,只慢了五分钟。
一共有十个包:
codeblocks-20.03-1.fc28.lemote.mips64el.rpm codeblocks-contrib-20.03-1.fc28.lemote.mips64el.rpm codeblocks-contrib-debuginfo-20.03-1.fc28.lemote.mips64el.rpm codeblocks-contrib-devel-20.03-1.fc28.lemote.mips64el.rpm codeblocks-contrib-libs-20.03-1.fc28.lemote.mips64el.rpm codeblocks-contrib-libs-debuginfo-20.03-1.fc28.lemote.mips64el.rpm codeblocks-debuginfo-20.03-1.fc28.lemote.mips64el.rpm codeblocks-devel-20.03-1.fc28.lemote.mips64el.rpm codeblocks-libs-20.03-1.fc28.lemote.mips64el.rpm codeblocks-libs-debuginfo-20.03-1.fc28.lemote.mips64el.rpm
安装 codeblocks-20.03-1.fc28.lemote.mips64el.rpm
和 codeblocks-libs-20.03-1.fc28.lemote.mips64el.rpm
就能够,运行飞快,暂时没发现什么bug。
编译到 help_plugin 时报的错,折腾了一个上午。原本源码里是有 bzip2 这个目录的,可是 configure 的时候删了,有以下输出。
+ rm -rf src/plugins/contrib/devpak_plugin/bzip2 + rm -rf src/plugins/contrib/help_plugin/bzip2 src/plugins/contrib/help_plugin/zlib
试着手动修改 Makefile ,加上 -lbz2
,报 “/usr/bin/ld: cannot find -lbz2”。因而试着找bzip2的lib,竟然在找到一个 “/usr/lib32/pkgconfig/bzip2.pc”,为啥在 lib32 ?试着按照里面的,用 -L$/usr/lib32 -lbz2
,果真也不行,报 “error adding symbols: File in wrong format”。
刚开始明明已经装了 bzip2-devel ,哪能没有?看了一下系统里的确有, file /usr/lib32/libbz2.so.1.0.6
竟然是 n32 的,压根不能用啊。
一度觉得包出问题了,回头看了以前安装的包: sudo dnf list installed|grep bzip2
,敲,给我装了个 bzip2-devel.mipsn32el
。手动安装 sudo dnf install bzip2-devel.mips64el
后解决。
因此……安装依赖包的时候得注意下…… qaq
by sdust weilinfox
本文地址 https://www.cnblogs.com/weilinfox/p/12997054.html 转载请注明出处。