Qt Creator/Linux:为动态库设置编译器/链接器选项 -ldl

Posted

技术标签:

【中文标题】Qt Creator/Linux:为动态库设置编译器/链接器选项 -ldl【英文标题】:Qt Creator/Linux: setting compiler/linker option -ldl for dynamic libraries 【发布时间】:2014-08-12 17:44:06 【问题描述】:

我都被谷歌搜索了!感谢任何可以帮助我的人...

我已经构建了 test.so 并希望使用 dlfcn.h 中定义的 dlopen()、dlsym() 等动态调用它

可以在命令行上编译我的调用程序(main.cpp)没有错误

g++ main.cpp -ldl -o myprog

如果没有 -ldl 开关,我会收到错误:undefined reference dlopen()。 另外,如果 -ldl 开关没有放在 g++ 参数列表中的源文件之后,那么我会得到同样的错误。

我的问题是:如何在 Qt Creator 中编译我的 main.cpp? Qt Creator 报同样的错误:undefined reference dlopen()

我尝试将 -ldl 直接添加到 Makefile 中的标志(CFLAGS、CXXFLAGS、LFLAGS),但无济于事。 (也许标志是在 -ldl 不起作用的源文件之前插入的?)

这是我的 main.cpp:

#include <dlfcn.h>
int main()


   void* handle = dlopen("./test.so", RTLD_LAZY);

   return 0;

我在 linux 上使用 Qt Creator 2.4.1

非常感谢:)

【问题讨论】:

使用 qmake,尝试将 -ldl 添加到 LIBS 还向我们展示您尝试过的 Makefile 中的行。 【参考方案1】:

在您的 project_name.pro 文件中,您应该像这样添加到 LIBS 变量:

LIBS += -ldl

【讨论】:

以上是关于Qt Creator/Linux:为动态库设置编译器/链接器选项 -ldl的主要内容,如果未能解决你的问题,请参考以下文章

QT程序在发布的时候应注意的地方

Qt下如何编译库

qt动态库编译,是不是只要声明

动态库编译详解

QT for Android怎样设置静态编译

Qt creator 如何设置静态编译