我想链接共享库libfoo.so
,其相对路径为../path/to/lib
。遵循编译命令:
g++ -o /executable/path test.o -L../path/to/lib -lfoo
给出
/usr/bin/ld: can not find -lfoo
collect2: error: ld returned 1 exit status
并且此命令提供了不同的错误消息
g++ -o /executable/path test.o -L../path/to/lib/libfoo.so
给出
undefined reference to 'functions and class members in libfoo.so'
它似乎既没有正确编译。我想念一些东西吗?
答案 0 :(得分:0)
似乎库未正确安装。我不知道哪个是dist。你在使用,但这些步骤应该可以解决问题。
运行此命令以查看库的位置。
find / -name 'libfoo.so.*'
将此添加到/etc/ld.so.conf。它包含搜索库的默认目录。
include /usr/local/lib
include /usr
安装或更新运行此命令。
ldconfig
祝你好运......
修改1:尝试运行LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib lfoo
编辑2:运行此命令,但只会设置一次。
export LD_LIBRARY_PATH=/usr/local/lib/
顺便说一下,每次更新库时都需要运行ldconfig。