【问题标题】:ld can't find an available libraryld 找不到可用的库
【发布时间】:2017-03-02 17:01:08
【问题描述】:

链接我的应用程序时遇到问题,ld 找不到可用的库:

/usr/bin/ld : could not find -lVtsUtils_0.1.5d
/usr/bin/ld : could not find -lVtsCore_0.1.5d
/usr/bin/ld : could not find -llibmysql

编译行是(通过make VERBOSE=1找到):

/usr/bin/c++ -g CMakeFiles/Dental.dir/main.cpp.o CMakeFiles/Dental.dir/qrc_myproject.cpp.o CMakeFiles/Dental.dir/Dental_automoc.cpp.o -o ../../../bin/debug/Dentald -L/home/naccyde/Projets/myproject/lib/linux -rdynamic /usr/lib64/libQt5Widgets.so.5.6.2 -lVtsUtils_0.1.5d -lVtsCore_0.1.5d -llibmysql /usr/lib64/libQt5Gui.so.5.6.2 /usr/lib64/libQt5Core.so.5.6.2 -Wl,-rpath,/home/naccyde/Projets/myproject/lib/linux

但是ls -l /home/naccyde/Projets/myproject/lib/linux显示:

-rwxrwxrwx. 1 naccyde naccyde  2067984  2 mars  17:34 VtsCore_0.1.5d.so
-rwxrwxrwx. 1 naccyde naccyde 10984568  2 mars  17:34 VtsNavigation_0.1.5d.so
-rwxrwxrwx. 1 naccyde naccyde  4760776  2 mars  17:34 VtsUtils_0.1.5d.so

我不明白为什么它不起作用。

【问题讨论】:

    标签: c++ makefile ld


    【解决方案1】:

    Linux(或所有 POSIX 系统)上的库需要以 lib 为前缀。因此,名为VtsCore_0.1.5d 的动态库的文件名应为libVtsCore_0.1.5d.so

    适当地重命名您的库。或者将实际库文件的完整路径(例如/home/naccyde/Projets/myproject/lib/linux/VtsCore_0.1.5d.so)传递给链接器。

    【讨论】:

      猜你喜欢
      • 2014-12-13
      • 2021-10-24
      • 2017-03-31
      • 1970-01-01
      • 2011-09-26
      • 2018-03-10
      • 2017-08-08
      • 2017-07-13
      • 2020-08-10
      相关资源
      最近更新 更多