Ced*_*tin 3 compiling libraries gcc
我正在一个系统上进行一些繁重的数字运算,我想为启动数字运算计算的用户编译(并微调)自定义 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
Run Code Online (Sandbox Code Playgroud)
这显然是 GMP 6.0.0。
我正在编译我的数字运算程序:
$ gcc crunch.c -o crunch.o -L/gmp_install/lib -lgmp
Run Code Online (Sandbox Code Playgroud)
(我知道我可能会通过弄乱传递给 GCC 的一些参数来获得一些收益,但这里的大问题是非自定义 GMP 的“缓慢”)。
然后我调用./crunch.o并且它可以工作,但它比我在旧系统上的自定义构建 GMP 慢 15%(在完全相同的计算机上使用上面粘贴的完全相同的 gcc 编译命令)。
我现在想再次编译自定义 GMP 6.1.0,但只有运行繁重计算的用户才能访问。
换句话说:我现在想干净地安装自定义 GMP,而不是弄乱(在作为 root 用户时)整个文件系统。
但我不明白-L/gmp_install/lib指的是什么,也不明白-lgmp做什么。
我认为我需要做的第一步是:
那么如何为一个(非 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
Run Code Online (Sandbox Code Playgroud)
这将在~/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
Run Code Online (Sandbox Code Playgroud)
您可以在要使用它之前将其放入您的~/.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
运行时需要 归档时间: |
|
查看次数: |
3997 次 |
最近记录: |