gpt4 book ai didi

c - GNU C : How can I compile a C program with dynamic library option -lmylib but without -L option

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:55 25 4
gpt4 key购买 nike

我使用了几个库,例如 pthread 作为 -lpthreadmath 作为 -lmath 但我需要不要使用 -L 选项来指定链接路径。

但是,

  1. 我通过编译我的程序 mylib.c 创建了一个库 mylibgcc -fPIC mylib.c -o libmylib.so
  2. 放在/usr/local/lib/libcustom
  3. 将路径 /usr/local/lib/libcustom 添加到文件中/etc/ld.so.conf.d/libcustom.conf
  4. 运行ldconfig
  5. 运行 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/customlib
  6. 创建了一个 sample.c 调用了 mylib 中的函数

现在当我编译 sample.c 一个 gcc -L/usr/local/lib/customlib -o sample.o -lmylib 时它工作正常尝试 gcc sample.c -o sample.o -lmylib 它给出 ld 错误为 /usr/bin/ld: cannot find -lmylib

我想知道为什么 -L 标志在 -lpthread 的情况下是可选的,而在 -lmylib 的情况下是强制性的?在 -lmylib 的情况下如何跳过 -L 的使用?

谢谢。

最佳答案

您正在寻找 LIBRARY_PATH

LD_LIBRARY_PATH 用于在运行时而非编译时加载动态库。


旁注:添加到现有环境变量时,请确保使用 $LD_LIBRARY_PATH 而不仅仅是 LD_LIBRARY_PATH。否则,您将丢弃原始内容并放入文字文本 LD_LIBRARY_PATH

所以它应该从:

export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/usr/local/lib/customlib

到:

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib/customlib

关于c - GNU C : How can I compile a C program with dynamic library option -lmylib but without -L option,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35200405/

25 4 0
文章推荐: 与 C 语法混淆(与指针和符号有关)
文章推荐: python - 基于 gui 的脚本,与 ajax/http 交互以进行网络抓取/抓取
文章推荐: java - 数组列表到 Collection