如果我用“-L”编译我的源代码。可以找到动态库libmd5.so。
gcc main.c -g -O2 -Wall -o main -L. -lmd5 -lcr
但如果我离开“-L。” - 选项,链接器就找不到动态库。如何在不调用“-L”的情况下更改它?
(附加信息libmd5.so和libmd5.so.1.0.1位于/ home / user / ba)
答案 0 :(得分:8)
-L标志确实没什么问题,所以你不应该这么努力去除它 - 它是否在运行时遇到问题,因为系统不会加载你链接的库?这里有一些选择:
export LD_LIBRARY_PATH=/home/user/ba
和export LIBRARY_PATH=/home/user/ba
。这只对当前的shell有效。-L .
)。将-L /home/user/ba -Wl,-rpath,/home/user/ba
添加到链接器标志。这仅对您正在制作的可执行文件有效。/usr/lib
。这将是系统范围的。以上内容在运行时也有效 - 它也会在运行应用程序时尝试在/ home / user / ba或系统的其他库搜索路径中找到libmd5.so。
答案 1 :(得分:1)
您可以设置LIBRARY_PATH
环境变量。
export LIBRARY_PATH=/home/user/ba