当前位置: 技术问答>linux和unix
能否把一些静态库文件(.a)和.o文件一起打包成一个静态库文件?
来源: 互联网 发布时间:2017-01-13
本文导语: 各位高手,想请教各位一个问题: 我现在手头上有两个 libs1.a,libk1.a 这两个静态库文件, 然后我再写了一个 hh.cpp文件调用了这两个静态库的一些函数, 最后用 ar cr my.a libs1.a libk1.a hh.o 这个语句生成了my.a文...
各位高手,想请教各位一个问题:
我现在手头上有两个 libs1.a,libk1.a 这两个静态库文件,
然后我再写了一个 hh.cpp文件调用了这两个静态库的一些函数,
最后用
ar cr my.a libs1.a libk1.a hh.o 这个语句生成了my.a文件,
同时也用
g++ -fPic -shared -o my.so hh.o libs1.a libk1.a -pthread 生成了my.so文件.
可惜的是当我使用这个my.a 跟一个测试cpp连接时,编译时发现会出现以下的错误:
my.a: undefined reference to "Func1(int i)" 这样的错误,其中 Func1是libs1.a
所提供的函数.
但是我使用my.so跟测试cpp去进行编译,就没有报任何错误的.
想请教各位,怎么去用一些.a文件和.o文件去生成一个.a文件?怎么避免我所遇到的这个问题?
我现在手头上有两个 libs1.a,libk1.a 这两个静态库文件,
然后我再写了一个 hh.cpp文件调用了这两个静态库的一些函数,
最后用
ar cr my.a libs1.a libk1.a hh.o 这个语句生成了my.a文件,
同时也用
g++ -fPic -shared -o my.so hh.o libs1.a libk1.a -pthread 生成了my.so文件.
可惜的是当我使用这个my.a 跟一个测试cpp连接时,编译时发现会出现以下的错误:
my.a: undefined reference to "Func1(int i)" 这样的错误,其中 Func1是libs1.a
所提供的函数.
但是我使用my.so跟测试cpp去进行编译,就没有报任何错误的.
想请教各位,怎么去用一些.a文件和.o文件去生成一个.a文件?怎么避免我所遇到的这个问题?
|
ar cr my.a libs1.a libk1.a hh.o
========
这样有点问题吧,
建议先把libs1.a 和 libk1.a中的.o解出来,然后再加到my.a中
mkdir libs1 libk1
(cd libs1; ar x ../libs1.a)
(cd libk1; ar x ../libk1.a)
ar cr my.a libs1.a/*.o libk1/*.o hh.o
========
这样有点问题吧,
建议先把libs1.a 和 libk1.a中的.o解出来,然后再加到my.a中
mkdir libs1 libk1
(cd libs1; ar x ../libs1.a)
(cd libk1; ar x ../libk1.a)
ar cr my.a libs1.a/*.o libk1/*.o hh.o
|
所我所知,ar就是干这个的。
先编译成o文件,再用ar添加到之前的.a文件中。
我感觉你的参数有问题,你尝试一下去掉c,看看警告。
或者将r换成q ?
先编译成o文件,再用ar添加到之前的.a文件中。
我感觉你的参数有问题,你尝试一下去掉c,看看警告。
或者将r换成q ?
|
支持这样的做法
|
3楼正解
字数不够
字数不够