如何用g ++创build一个静态库?
有人可以告诉我如何创build一个.cpp和一个.hpp文件的静态库吗? 我是否需要创build.o和.a? 我也想知道如何编译一个静态库,并在其他.cpp代码中使用它。 我有header.cpp
, header.hpp .
我想创buildheader.a
。 在test.cpp
testingheader.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
不过,我会给你一个怀疑的好处,就是你的实际使用情况有点复杂,有更多的模块。
希望这可以帮助!