我在家里创建了自己的库目录 (/home/mathieu/lib
)。我在这个目录中有一个名为 libmath.so
的库。
要将此目录添加到 ld
,我已将路径添加到文件 /etc/ld.so.conf
中。我通过执行 sudo ldconfig
重新加载了缓存。
当我执行 sudo ldconfig -p | grep libmath.so
我得到 libmath.so (libc6) =>/home/mathieu/lib/libmath.so
。所以它有效。
问题
当我执行 ld -lmath
时,我得到:
attempt to open /usr/i486-linux-gnu/lib32/libmath.so failed
attempt to open /usr/i486-linux-gnu/lib32/libmath.a failed
attempt to open /usr/local/lib32/libmath.so failed
attempt to open /usr/local/lib32/libmath.a failed
attempt to open /lib32/libmath.so failed
attempt to open /lib32/libmath.a failed
attempt to open /usr/lib32/libmath.so failed
attempt to open /usr/lib32/libmath.a failed
attempt to open /usr/local/lib/i386-linux-gnu/libmath.so failed
attempt to open /usr/local/lib/i386-linux-gnu/libmath.a failed
attempt to open /usr/local/lib/libmath.so failed
attempt to open /usr/local/lib/libmath.a failed
attempt to open /lib/i386-linux-gnu/libmath.so failed
attempt to open /lib/i386-linux-gnu/libmath.a failed
attempt to open /lib/libmath.so failed
attempt to open /lib/libmath.a failed
attempt to open /usr/lib/i386-linux-gnu/libmath.so failed
attempt to open /usr/lib/i386-linux-gnu/libmath.a failed
attempt to open /usr/lib/libmath.so failed
attempt to open /usr/lib/libmath.a failed
ld: cannot find -lmath
ld
甚至不在 /home/mathieu/lib
路径中寻找。
gcc test.c -o test -lmath
返回
/usr/bin/ld: cannot find -lmath
collect2: error: ld returned 1 exit status
你有解决办法吗?
谢谢。
最佳答案
可以使用LIBRARY_PATH
添加gcc
编译时搜索的目录,
export LIBRARY_PATH=$HOME/lib
或者,您可以将库添加到 -L
命令行标志以 gcc
就像
gcc test.c -o test -lmath -L$HOME/lib
问题是您对 /etc/ld.so.conf
的修改将在应用程序启动时用于查找正确的库(而不是在编译时)。
关于linux - 无法将库目录添加到 ld,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26598143/