/usr/bin/ld: 找不到 -l

#CMakeLists.txt
....
target_link-libraries(App hello;Mylib)

cd build
cmake ..正常
make 报错

Scanning dependencies of target App
[ 25%] Building CXX object CMakeFiles/App.dir/main.cpp.o
[ 50%] Linking CXX executable App
/usr/bin/ld: 找不到 -lMylib

.bashrc里有导出一个目录,目录下有libhello.so
export LD_LIBRARY_PATH="/usr/local/lib"
另一个库在别处:/usr/local/bin/libMylib.so,如果我把/usr/local/bin也加入LD_LIBRARY_PATH是可以make不报错的。(这里是我记错了)

但是我的疑问是

我把/usr/local/bin添加到下面第一个配置文件中,为什么随后make时仍然找不到呢?

命令:ls /etc/ld.so.conf.d/
i386-linux-gnu.conf  libc.conf  x86_64-linux-gnu.conf  zz_i386-biarch-compat.conf
命令:sudo ldconfig
命令:sudo ldconfig -p|grep Mylib
        libMylib.so (libc6,x86-64) => /usr/local/bin/libMylib.so

其他博客里说到,二进制运行时寻找动态库的顺序是:

1.环境变量LD_LIBRARY_PATH指定的路径  
2.缓存文件/etc/ld.so.cache指定的路径  
3.默认的共享库目录,先是/lib,然后是/usr/lib

难道编译时,编译时不按照此顺序吗?1和3我试过,make都不报错(这里是我记错了)

阅读 4.4k
1 个回答

https://blog.csdn.net/luotuo4...
“链接”阶段的寻找位置:

1.编译命令中-L指定的目录
2. 环境变量LIBRARY_PATH所指定的目录
3. 默认目录。/lib、/usr/lib等。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进