如何為一個使用者安裝自定義 GMP 庫?
我正在一個系統上進行一些繁重的數字運算,我想為啟動數字運算計算的使用者編譯(和微調)自定義 GMP 6.1.0。以前我有一個 Debian wheezy (7.6) 系統,我在該系統上安裝了一個自定義的 GMP 庫,同時是 root 並在文件系統中左右修改東西(因為我不知道更好)。它最終奏效了:我的自定義 GMP 庫處理數字的速度比庫存 GMP 快 15%。
現在我在那台電腦上安裝了一個新的 Debian (Jessie 8.3),帶有“庫存”GMP(Debian Jessie 附帶的那個):
# gcc --version gcc (Debian 4.9.2-10) 4.9.2 # apt-get install libgmp10 # apt-get install libgmp-dev
這顯然是 GMP 6.0.0。
我正在編譯我的數字運算程序:
$ gcc crunch.c -o crunch.o -L/gmp_install/lib -lgmp
(我知道我可能會通過弄亂傳遞給 GCC 的一些參數來獲得一些,但這裡的大問題是非自定義 GMP 的“緩慢”)。
然後我呼叫*./crunch.o*並且它可以工作,但它比我在舊系統上的自定義建構 GMP 慢 15%(使用上面粘貼在完全相同的電腦上的完全相同的 gcc 編譯命令)。
我現在想再次編譯自定義 GMP 6.1.0,但只有執行繁重計算的使用者才能訪問。
換句話說:我現在想乾淨地安裝一個自定義 GMP,而不是弄亂整個文件系統(以 root 身份)。
但我不明白*-L/gmp_install/lib指的是什麼,也不明白-lgmp*是做什麼的。
我認為我需要做的第一步是:
- 轉到https://ftp.gnu.org/gnu/gmp/
- 下載 gmp-6.1.0.tar.bz2
- 傳播
- ???
那麼如何為一個(非 root)使用者帳戶編譯自定義 GMP,然後如何編譯我的 crunch.c 程序?
您可以作為普通使用者使用以下步驟
tar xvjf gmp-6.1.0.tar.bz2 cd gmp-6.1.0 ./configure --prefix=${HOME}/gmp/6.1.0 make make install
這將在
~/gmp/6.1.0
. 現在如果你想使用這個版本來編譯軟體或在執行時使用它,你必須設置一些環境變數:GMP_DIR="${HOME}/gmp/6.1.0" export LD_LIBRARY_PATH=${GMP_DIR}/lib64:$LD_LIBRARY_PATH export LIBRARY_PATH=${GMP_DIR}/lib64:$LIBRARY_PATH export CPATH=${GMP_DIR}/include:$CPATH
您可以在要使用它之前將其放入您的
~/.bashrc
或單獨的文件source
中,或者編寫一個包含二進製文件的包裝腳本。其他人喜歡environment-modules
用於此類任務。該
-lgmp
參數告訴您的連結器連結到共享庫libgmp.so
,並意味著在眾所周知的路徑中-L/gmp_install/lib
搜尋庫( ./gmp_install/lib``/lib, lib64, /usr/lib, /usr/lib64, ...)
環境變數使用如下:
LIBRARY_PATH``-L
應提供與開關相同的CPATH
為標頭檔提供額外的搜尋路徑LD_LIBRARY_PATH
執行時需要