編譯安裝 codeblocks 20.03 mips64el


期末考試要用哦,不然誰會願意去踩這么多坑。 qaq

龍夢 Fedora28 中有 codeblocks 17.12,但是 Ctrl-v 粘貼會閃退,導致壓根不能用。Bing了一下發現這其實是 codeblocks 的一個已知 bug,而且看起來已經被修復。於是我冒着可能引入更多 bug 的風險,編譯安裝 20.03 。其實不光光是編譯,而且會生成 rpm 包,這樣未來重新安裝和卸載都十分方便。

我所碰到的,編譯中發生的奇奇怪怪的問題,則寫在了最后的“一個坑”中。

如果有需要軟件包的可以在這里下載

一些信息

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)

打包工具和工具鏈

sudo dnf install rpm-build gcc gcc-c++

取得源碼

sourceforge 下載
codeblocks-20.03.tar.bz2 得到源碼, tar -jxvf codeblocks-20.03.tar.bz2 解壓得到 codeblocks.spec.fedora ,放在 SPECS 下。

注意這里使用 codeblocks.spec.fedora 而不是 codeblocks.spec

小幅修改

  • src/plugins/contrib/dragscroll/dragscrollcfg.h:38

感謝福萊的指導~

virtual void InitDialog(){ asm("int3");} 改為 virtual void InitDialog(){ asm("break");}

  • src/src/Makefile.am:37

LDADD 修改如下:

codeblocks_LDADD =  ../sdk/libcodeblocks.la \
			$(WX_LIBS) \
			$(WX_GTK_LIBS) -lgobject-2.0
  • 重新打包

重新打包,並放到 SOURCES 目錄下。

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

編譯打包

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.rpmcodeblocks-libs-20.03-1.fc28.lemote.mips64el.rpm 就可以,運行飛快,暫時沒發現什么bug。

一個坑

  • /bin/sh: 第 20 行: cd: bzip2: No such file or directory

編譯到 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
轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM