如何仅为一个用户安装自定义 GMP 库?

如何仅为一个用户安装自定义 GMP 库?

我正在一个系统上进行一些繁重的数字运算,我想为启动数字运算计算的用户编译(并微调)自定义 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也有。

我认为我需要做的第一步是:

那么,如何为一个(非 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运行时需要

相关内容