g++ 同时链接静态和非静态库

ser*_*atg 6 c++ makefile g++ dynamic-linking static-linking

我有一个 makefile 项目,其中包含几个不同的库。其中之一是我静态链接的 boost 库,以使我的程序可移植。这是我的 makefile 命令的样子:

g++ -O0 -g test.cpp testObject.o -pthread -I/home/user/devel/lmx-sdk-4.7.1/include/ -L/home/user/devel/lmx-sdk-4.7.1/linux_x64 -llmxclient -lrt -ldl -lboost_filesystem  -lboost_system -static -static-libgcc -o $@
Run Code Online (Sandbox Code Playgroud)

我还将 lmx-sdk 库链接到我的项目以使用许可功能;然而,似乎 lmx-sdk 似乎不喜欢静态链接,因为它给出了一个错误“在静态链接的应用程序中使用‘dlopen’需要在运行时使用 glibc 版本中用于链接的共享库”。

我怎样才能静态链接一些库和动态链接其他库?

提前致谢

PS我检查了一些类似的主题并尝试了一些对我不起作用的方法。

ser*_*atg 8

使用-Wl,-Bdynamicand-Wl,-Bstatic而不是仅仅使用-Bdynamic并-Bstatic解决了问题。

完整的链接行现在看起来像这样:

g++ -O0 -g test.cpp testObject.o -pthread -Bdynamic -I/home/user/devel/lmx-sdk-4.7.1/include/ -L/home/user/devel/lmx-sdk-4.7.1/linux_x64 -llmxclient -lrt -ldl -Wl,-Bstatic -lboost_filesystem -lboost_system -o $@