在linux中编译/链接多个c ++库

时间:2017-07-06 05:45:27

标签: c++ linux makefile g++ static-libraries

我有3个不依赖的独立库,它们独有,使用g ++ -c单独编译,然后使用ar rvs *.o单独添加到单独的存档。

我现在有3个单独的档案。

我现在有另一个第四个库,它依赖于以前所有3个库。如何编译我的第4个库以包含其他3个独立库,在main.cpp程序中使用全部4个(仅引用第4个库)?

我是g ++ / linux / makefile COMPLETE BEGINNER。

1 个答案:

答案 0 :(得分:2)

第四个库是静态库还是动态库?

三个第一个库是静态库,它们只不过是目标文件的存档。如果第四个库就是那个,那么你就不用它了,只需创建档案。

问题在于链接与第四个库。由于静态库只不过是目标文件的归档,因此您需要链接所有四个库。您还需要在链接器的命令行上正确放置库:如果库A依赖于库B,则A需要在链接器命令行上 B之前

另一方面如果第四个库是一个共享库,那么它的链接就像一个可执行程序,并且在执行此操作时,您可以像往常一样链接所有需要的库。然后,在使用共享库创建程序时,您不需要与依赖项链接。

对于实际命令行,最简单的方法是在链接时添加库:

$ g++ main.o -o my_program lib4.a lib3.a lib2.a lib1.a

以上命令用于链接静态库,并在创建main.cpp源的目标文件后。