我正在一个系统上进行一些繁重的数字运算,我想为启动数字运算计算的用户编译(并微调)自定义 GMP 6.1.0。之前我有一个 Debian wheezy (7.6) 系统,我在其中安装了一个自定义 GMP 库,同时以 root 身份修改文件系统中的左右内容(因为我不知道更好)。它最终成功了:我的自定义 GMP 库处理数字的速度比库存 GMP 快约 15%。
现在我在该计算机上安装了一个新的 Debian (Jessie 8.3),并带有“stock”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 的“缓慢”)。
然后我调用./紧缩.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 程序呢?
答案1
您可以作为普通用户使用以下步骤
tar xvjf gmp-6.1.0.tar.bz2
cd gmp-6.1.0
./configure --prefix=${HOME}/gmp/6.1.0
make
make install
这将在 中安装 gmp ~/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
运行时需要