gpt4 book ai didi

c - 如何使用我刚刚从源代码构建的 GMP 库?

转载 作者:行者123 更新时间:2023-11-30 15:32:32 26 4
gpt4 key购买 nike

我有一个带有以下 header 的小型 C 程序:

#include <gmp.h>

我编译它是这样做的:

gcc test.c -o test.o -L/gmp_install/lib -lgmp

然后我就可以正常运行了。但它在我的系统上使用“库存”GMP 库。

现在我想使用另一个版本的 GMP 库来编译它,我在本地安装了该库,但无法使其工作。

新库显然安装在/usr/local/lib中:

... $  ls -l /usr/local/lib
-rw-r--r-- 1 root staff 1276320 Jun 15 02:22 libgmp.a
-rwxr-xr-x 1 root staff 914 Jun 15 02:22 libgmp.la
lrwxrwxrwx 1 root staff 16 Jun 15 02:22 libgmp.so -> libgmp.so.10.2.0
lrwxrwxrwx 1 root staff 16 Jun 15 02:22 libgmp.so.10 -> libgmp.so.10.2.0
-rwxr-xr-x 1 root staff 528715 Jun 15 02:22 libgmp.so.10.2.0

但无论我如何尝试,显然使用的都是旧库。

甚至使用:

gcc perf.c -o perf.o -O3 -L/ -lgmp

但它使用 /usr/lib/x86_64-linux-gnu/ 中的 GMP 版本。

知道我也想保留旧版本,在/usr/local/bin 中使用 GMP 版本的正确方法是什么?

此外,创建可执行文件后,是否有一种简单的方法可以查看它在运行时应使用哪个库? (我可以使用一个版本的 GMP 创建可执行文件,然后使用另一个版本的 GMP 执行它,并且知道该库是动态链接的吗?)

最佳答案

做两件事:

  1. 使用-L/usr/local/lib编译时标记
  2. 设置LD_LIBRARY_PATH运行程序时变量有 /usr/local/lib 。因此,如果您使用的是 bash shell,则必须执行类似

    的操作

    $ export LD_LIBRARY_PATH=/usr/local/lib

    $ ./your_program

使用/usr/local/lib运行时的版本。另外,为了查看它将在运行时使用哪一个,您可以随时执行 ldd <your binary name>这将打印出所有动态依赖项。

关于c - 如何使用我刚刚从源代码构建的 GMP 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24225213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com