編譯安裝 codeblocks 20.03 mips64el

期末考試要用哦,否則誰會願意去踩這麼多坑。 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插件

小幅修改

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

感謝福萊的指導~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 在當前終端下運行一遍便可。

  • configure: error: Package requirements (xxx) were not met
#/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"
  • xxx.h not find

查看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

在編譯過程當中, Makefile 生成後作,時間充裕。限於水平,我沒有更好的辦法。

  • src/src/Makefile:170

少了一個 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.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 轉載請註明出處。

相關文章
相關標籤/搜索