我有3个不依赖的独立库,它们独有,使用g ++ -c单独编译,然后使用ar rvs *.o
单独添加到单独的存档。
我现在有3个单独的档案。
我现在有另一个第四个库,它依赖于以前所有3个库。如何编译我的第4个库以包含其他3个独立库,在main.cpp程序中使用全部4个(仅引用第4个库)?
我是g ++ / linux / makefile COMPLETE BEGINNER。
答案 0 :(得分:2)
第四个库是静态库还是动态库?
三个第一个库是静态库,它们只不过是目标文件的存档。如果第四个库就是那个,那么你就不用它了,只需创建档案。
问题在于链接与第四个库。由于静态库只不过是目标文件的归档,因此您需要链接所有四个库。您还需要在链接器的命令行上正确放置库:如果库A依赖于库B,则A需要在链接器命令行上 B之前
。另一方面如果第四个库是一个共享库,那么它的链接就像一个可执行程序,并且在执行此操作时,您可以像往常一样链接所有需要的库。然后,在使用共享库创建程序时,您不需要与依赖项链接。
对于实际命令行,最简单的方法是在链接时添加库:
$ g++ main.o -o my_program lib4.a lib3.a lib2.a lib1.a
以上命令用于链接静态库,并在创建main.cpp
源的目标文件后。