我有一个基于Linux的操作系统,其中许多系统库被编译为静态库。
如何在我的应用程序中使用这些库,将链接到我的最终二进制文件?
答案 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选项需要一起考虑。