带有静态库的基于Linux的操作系统:我该怎么办?

时间:2012-10-02 12:53:06

标签: c++ c linux static-libraries

我有一个基于Linux的操作系统,其中许多系统库被编译为静态库。

如何在我的应用程序中使用这些库,链接到我的最终二进制文件?

2 个答案:

答案 0 :(得分:2)

您使用它们,因为您使用共享库,除了您静态链接。 An introduction to GCC - shared libraries and static libraries文章将帮助您入门。

答案 1 :(得分:2)

我很难理解。如果您要链接

之类的内容
g++ -o myprog myprog.o obj1.o obj2.o -L/path/to/lib -L/path2/to/lib -llib1 -llib2 -lib3

通过gcc或g ++包装器调用的链接器将执行“正确的事情(tm)”,如果liblib1.so存在于库路径中(/ path / to / lib,/ path2 / to / lib加上一组系统库可能是系统特定的目录,它将动态链接,如果不是liblib1.a将静态链接。唯一要注意的是,如果静态库中存在相互依赖(lib1需要lib2而lib2需要lib1),则可能需要多次重复它们或使用--start-group--end-group标记库的ld选项需要一起考虑。