如何用g ++创建静态库?

时间:2011-05-10 08:10:36

标签: c++ gcc compiler-construction g++

有人可以告诉我如何从.cpp和.hpp文件创建静态库吗?我需要创建.o和.a吗?我还想知道如何编译静态库并在其他.cpp代码中使用它。我有header.cppheader.hpp .我想创建header.a。测试test.cpp中的header.a。我正在使用g ++进行编译。

3 个答案:

答案 0 :(得分:91)

创建.o文件:

g++ -c header.cpp

将此文件添加到库中,必要时创建库:

ar rvs header.a header.o

使用库:

g++ main.cpp header.a

答案 1 :(得分:33)

您可以使用.a实用程序创建ar文件,如下所示:

ar crf lib/libHeader.a header.o

lib是一个包含所有库的目录。最好以这种方式组织代码并分离代码和目标文件。将所有内容放在一个目录中通常看起来很丑。上面的行在目录libHeader.a中创建lib。因此,在您当前的目录中,执行:

mkdir lib

然后运行上面的ar命令。

链接所有库时,您可以这样做:

g++ test.o -L./lib -lHeader -o test  

-L标志将g++lib/目录添加到路径中。这样,g++知道在查找libHeader时要搜索的目录。 -llibHeader标记要链接的特定库。

其中test.o的创建如下:

g++ -c test.cpp -o test.o 

答案 2 :(得分:22)

  

有人可以告诉我怎么做   从.cpp创建一个静态库   和.hpp文件?我需要创建吗?   .o和.a?

创建.o (按照正常情况):

g++ -c header.cpp

创建档案

ar rvs header.a header.o

<强>测试

g++ test.cpp header.a -o executable_name

请注意,只使用一个模块制作存档似乎毫无意义。你可以很容易地写出:

g++ test.cpp header.cpp -o executable_name

尽管如此,我还是会怀疑你的实际用例有点复杂,有更多的模块。

希望这有帮助!