无法在 qt creator (linux) 上链接共享库

Posted

技术标签:

【中文标题】无法在 qt creator (linux) 上链接共享库【英文标题】:Cannot link shared library on qt creator (linux) 【发布时间】:2014-03-29 20:28:56 【问题描述】:

这是我的 .pro 文件:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

DEPENDPATH += /home/khajak/CList/linker
INCLUDEPATH += /home/khajak/CList/linker

LIBS += -L/home/khajak/CList/linker -llibCListManager
LIBS += -L/home/khajak/CList/linker -llibCommandLineEngine

这里是/home/khajak/CList/linker 目录:

lrwxrwxrwx 1 khajak khajak     24 Mar 30 23:10 libCListManager.so -> libCListManager.so.1.0.0
lrwxrwxrwx 1 khajak khajak     24 Mar 30 23:10 libCListManager.so.1 -> libCListManager.so.1.0.0
lrwxrwxrwx 1 khajak khajak     24 Mar 30 23:10 libCListManager.so.1.0 -> libCListManager.so.1.0.0
-rwxrwxr-x 1 khajak khajak 344109 Mar 30 22:37 libCListManager.so.1.0.0
lrwxrwxrwx 1 khajak khajak     29 Mar 30 23:10 libCommandLineEngine.so -> libCommandLineEngine.so.1.0.0
lrwxrwxrwx 1 khajak khajak     29 Mar 30 23:10 libCommandLineEngine.so.1 -> libCommandLineEngine.so.1.0.0
lrwxrwxrwx 1 khajak khajak     29 Mar 30 23:10 libCommandLineEngine.so.1.0 -> libCommandLineEngine.so.1.0.0
-rwxrwxr-x 1 khajak khajak 207537 Mar 30 18:24 libCommandLineEngine.so.1.0.0
-rw-rw-r-- 1 khajak khajak    285 Mar 30 23:15 linker.pro

Qtcreator 报错:

:-1: error: cannot find -llibCListManager
:-1: error: cannot find -llibCommandLineEngine

【问题讨论】:

-llibCListManager 表示您想与名为 liblibCListManager.so 的库链接。试试-lCListManager @n.m.对,就是这样,写一个答案,让我接受。附言他们为什么要这样链接? 【参考方案1】:

引用man ld

  -l namespec
  --library=namespec<br>

namespec 指定的存档或目标文件添加到要链接的文件列表中。此选项可以使用任意次数。如果namespec 的格式为:filenameld 将在库路径中搜索名为filename 的文件,否则它将在库路径中搜索名为libnamespec.a 的文件。 在支持共享库的系统上,ld 还可以搜索 libnamespec.a. 以外的文件。具体而言,在 ELF 和 SunOS 系统上,ld 将在搜索名为 libnamespec.so 的库之前搜索名为 libnamespec.a 的库。 (按照惯例,“.so”扩展名表示共享库。)请注意,此行为不适用于 :filename,它始终指定一个名为 filename 的文件。

因此,-llibCListManager 表示您要与名为 liblibCListManager.so 的库链接。对于libCListManager.so,正确的选项是-lCListManager

【讨论】:

以上是关于无法在 qt creator (linux) 上链接共享库的主要内容,如果未能解决你的问题,请参考以下文章

Linux下Qt Creator编辑器无法输入中文解决

如何在 Mint Linux 中配置 QT creator

在 Qt Creator 中将 TagLib 库添加到 Linux Qt 项目?

Ubuntu下Qt creator无法输入中文怎么办

由于 NDK 路径中的反斜杠,Qt Creator 无法构建 Android 库

如何在 QT Creator 开源版本中为嵌入式 linux 交叉编译 qt