如何用g ++创build一个静态库?

有人可以告诉我如何创build一个.cpp和一个.hpp文件的静态库吗? 我是否需要创build.o和.a? 我也想知道如何编译一个静态库,并在其他.cpp代码中使用它。 我有header.cppheader.hpp . 我想创buildheader.a 。 在test.cpptestingheader.a。 我正在使用g ++进行编译。

创build一个.o文件:

 g++ -c header.cpp 

将此文件添加到库中,如有必要,创build库:

 ar rvs header.a header.o 

使用库:

 g++ main.cpp header.a 

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

 ar crf lib/libHeader.a header.o 

lib是一个包含所有库的目录。 以这种方式组织代码并分离代码和对象文件是一种很好的做法。 让一切都在一个目录中看起来很丑。 上面的行在目录lib创buildlibHeader.a 。 所以,在你目前的目录中,做:

 mkdir lib 

然后运行上面的ar命令。

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

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

-L标志将得到g++lib/目录添加到path中。 这样, g++知道在查找libHeader时要search什么目录。 -llibHeader标记要链接的特定库。

test.o是这样创build的:

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

有人可以告诉我如何创build一个.cpp和一个.hpp文件的静态库吗? 我是否需要创build.o和.a?

是。

创build.o (按照常规):

 g++ -c header.cpp 

创build存档

 ar rvs header.a header.o 

testing

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

请注意,仅使用一个模块进行归档似乎有点没有意义。 你可以轻松地写下:

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

不过,我会给你一个怀疑的好处,就是你的实际使用情况有点复杂,有更多的模块。

希望这可以帮助!