在同一程序中使用Linux C++共享库和静态库

Axe*_*ect 2 c++ linux static shared

如何在同一Linux程序中同时使用C++共享库和静态库?

使用g ++进行管理时,我试图-static在库之前和之后安排命令,我不想静态链接,但没有结果.ld通过g++抱怨共享库的.a文件在哪里(找不到 -无错误).

编辑:问题不是找不到 - 无论什么错误,因为它只是发生因为没有指定库的静态版本.我要做的是指定哪些库是静态链接的,哪些是动态的.

Bas*_*tch 6

假设你可以使用静态libfoo.a和动态libbar.so

g++ -o prog main.o other.o -Wl,-Bstatic -lfoo -Wl,-Bdynamic -lbar
Run Code Online (Sandbox Code Playgroud)

你应该避免从动态库中调用静态库中的函数; 这将是丑陋的.

暗示

用于将参数传递给由其调用的链接器的-Wl选项.g++ldg++

您可能想要g++ -v了解如何g++调用ld,也可以使用g++ -v -Wl,--verbose 也要求ld详细.