從零開始編譯安裝 Extcalc
- 2020 年 4 月 6 日
- 筆記
Extcalc 是個非常強大的計算器,同時也是一個非常老的軟體包,已經不再更新。希望使用 apt-get 或是 dnf 安裝已經不可能,更何況我是在 mips 的龍芯 3A 上。唯一的方法就是編譯安裝。
我是在龍芯 3A4000 + Debian10 上完成安裝的,其他系統可能有些許差別。
編譯安裝
- 獲得源碼包
從它的 sourceforge 首頁獲得源碼包: 傳送門
- 編譯
README 內容的部分翻譯:
依賴的軟體: Linux GCC 4 QT4.3 或更高版本 OpenGL cmake
如果有缺少,安裝即可。對於 GCC 4,我的版本是 gcc version 8.3.0 (Debian 8.3.0-6)
,編譯沒有大問題。對於 QT4.3, Debian 下運行 sudo apt-get install qt4-dev-tools
安裝 - 解壓縮 (tar -xzf extcalc-0.9.3.tar.gz) - 切換到目錄 (cd extcalc-0.9.3) - 運行 configure (cmake .) - 編譯 (make) - 切換為超級用戶 (su) - 安裝 (make install)
按部就班來就可。
① cmake .
第一次編譯,報錯說找不到 qtcore,但是我可以手動找到它。於是我安裝了 cmake-gui
: sudo apt-get install cmake-qt-gui
,使用 cmake-gui .
代替 cmake .
。
cmake-gui .
顯示 QT_QTCORE_LIBRARY_DEBUG
和 QT_QTCORE_LIBRARY_RELEASE
無法找到,全部手動定位為 /usr/lib/mips64el-linux-gnuabi64/libQtCore.so.4
即可。
單擊 Generate 之後再次報錯,顯示無法找到 QT_MOC_EXECUTABLE
、 QT_RCC_EXECUTABLE
、QT_UIC_EXECUTABLE
和 QT_INCLUDE_DIR
。分別單擊 Add Entry 添加,前三個 Type 選為 FILEPATH ,分別對應為 /usr/bin/moc
、/usr/bin/rcc
和 /usr/bin/uic
,最後一個 Type 選為 PATH,Value 為 /usr/share/qt4/include
。再次單擊 Generate 即成功。
第一次編譯我發現沒有 qt4 的 include ,於是安裝了 qt4-dev-tools
。第二次嘗試重現錯誤時錯誤消失。
② make
Warning 有忽略函數返回值和 string 強制轉換為 char* ,沒有什麼大問題。
一個 error :
/usr/bin/ld: CMakeFiles/extcalc.dir/src/graphout.o: undefined reference to symbol 'glBlendFunc' /usr/bin/ld: //lib/mips64el-linux-gnuabi64/libGL.so.1: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/extcalc.dir/build.make:994:extcalc] 錯誤 1 make[1]: *** [CMakeFiles/Makefile2:73:CMakeFiles/extcalc.dir/all] 錯誤 2 make: *** [Makefile:152:all] 錯誤 2
可見是 build.make 的第994行出錯,看看是啥:
$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/extcalc.dir/link.txt --verbose=
link.txt 裡面是用 c++ 把所有 .o 進行鏈接,而 glBlendFunc 是 Opengl 的一個函數,懷疑是編譯選項的問題。最後加上 -lGL
的選項再重新 make
即可成功完成編譯。
- 安裝
③ make install
su
切換為超級用戶後 make install
即可安裝成功。命令行 extcalc
或單擊其應用程式圖標即可運行~
- 卸載
安裝後,查看目錄里有個 install_manifest.txt 文件,保留它。如果需要卸載,運行 cat install_manifest.txt | sudo xargs rm
即可。
生成 Debian 包
這一部分內容的可行性和是否會損害系統將由讀者自行判斷
① 安裝 checkinstall
sudo apt-get install checkinstall
② 編輯 CMakeLists.txt
SET(CPACK_INSTALL_CMAKE_PROJECTS "<路徑>;Extcalc;ALL;/")
一行中的 <路徑>
改為你現在所在編譯目錄的路徑;
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i386")
這有兩行同樣的,把 i386
改為你編譯生成的二進位文件的體系架構,比如我這裡是 mips64el
。
修改後保存。
③ sudo checkinstall
sudo checkinstall
,它會提示你輸入描述和確認一些東西,看情況選擇即可。
最後顯示 創建 Debian 包……OK
則創建成功,它同時會替你安裝這個包,顯示 安裝 Debian 包……OK
。
如此,我們可以方便地通過 dpkg 卸載它,也可以方便地用於下一次安裝。
by SDUST weilinfox 本文地址: