在同一程序中使用Linux C++共享库和静态库
Using Linux C++ shared and static libraries in a same program
如何在同一个Linux程序中同时使用C++共享库和静态库?
当使用g++进行管理时,我尝试将-static
命令安排在我不想静态链接的库的前面和后面,但没有结果。ld
到g++
抱怨共享库的.a文件在哪里(找不到-whatever错误)。
EDIT:问题不在于找不到-lwhatever错误,因为它只是因为没有指定库的静态版本而发生的。我要做的是指定哪些库要静态链接,哪些库要动态链接。
假设静态libfoo.a
和动态libbar.so
,则可以使用
g++ -o prog main.o other.o -Wl,-Bstatic -lfoo -Wl,-Bdynamic -lbar
您应该避免从动态库调用静态库中的函数;这将是丑陋的
提示
-Wl
到g++
的选项用于向g++
调用的ld
链接器传递参数。
您可能希望使用g++ -v
来了解g++
是如何调用ld
的,也可以使用g++ -v -Wl,--verbose
来要求ld
详细说明。
您不需要指定-static或-dynamic。链接文件的格式指定它是共享链接还是静态链接。您只需要选择正确的文件进行链接即可。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 在cuda线程之间共享大量常量数据
- 如何从具有移动语义的类对象中生成共享指针
- 在c代码之间共享数据的最佳方式
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 将静态库链接到不带-fPIC的共享库中
- 为什么std::互斥需要很长的、非常不规则的时间来共享
- 使用Boost Interprocess创建托管共享内存需要很长时间
- 无法在Ubuntu上将共享库与Eclipse链接
- 从python调用openMP共享库时,未定义opnMP函数
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 为什么我的共享库中存在展开符号
- 使用共享指针的函数调用,其对象应为 const
- 具有两个独占锁组的共享锁
- 共享队列的线程安全
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 多个"常量引用"变量可以共享同一个内存吗?
- 如何访问由共享指针保存的类方法?
- 从矢量或地图中删除共享指针