读书人

linux静态库啊

发布时间: 2012-05-21 18:04:41 作者: rapoo

linux静态库求助啊。。。。
有一个api.h 还有两个文件a.h a.cpp b.h b.cpp,如何将a.h a.cpp b.h b.cpp 封装成一个lib,其中api.h是可以对外开放的,a.h和b.h是不开放的。
直接写成
g++ -c -o a.o a.cpp
g++ -c -o b.o b.cpp
然后把a.o 和b.o封装成libab.a,这样对吗,如果这样对,那么a.h和b.h有什么用吗?

[解决办法]
a.h和b.h在编译时有用,否则编译器不知道函数的原型,不如何编译链接函数。
[解决办法]
参考:
在Linux环境下编写和使用静态函数库
[解决办法]
直接写成
g++ -c -o a.o a.cpp
g++ -c -o b.o b.cpp
然后把a.o 和b.o封装成libab.a,这样对吗,如果这样对,那么a.h和b.h有什么用吗?

手动用ar生成.a,这样是可以的, a.h b.h在编译的时候如果被 include,必须能让编译器可见,比如在当前工作目录,如果不是,你得 -Ixxinclude/ 让编译器知道在哪找到, a.h b.h的作用局限于编译a.cpp b.cpp

[解决办法]
简单来说 是对的 .h是给别的文件申明用的

读书人网 >C++

热点推荐