当前位置: 技术问答>linux和unix
请教如何生成包含动态链接的静态库文件
来源: 互联网 发布时间:2016-07-28
本文导语: 具体如下: 在一个源文件func.c中调用其他动态库文件, 1:把这个源文件作成静态库文件 g++ -c func.c ar cr libfunc.a func.o 2:和主文件main.c一起生成执行文件的时候 g++ main.c libfunc.a -L -l其...
具体如下:
在一个源文件func.c中调用其他动态库文件,
1:把这个源文件作成静态库文件
g++ -c func.c
ar cr libfunc.a func.o
2:和主文件main.c一起生成执行文件的时候
g++ main.c libfunc.a -L -l其他动态库文件
我想问怎么才能只要像下面这样就能生成执行文件?
g++ main.c libfunc.a
也就是说把链接放在 libfunc.a里 , 是改.o文件还是.a文件呢
在一个源文件func.c中调用其他动态库文件,
1:把这个源文件作成静态库文件
g++ -c func.c
ar cr libfunc.a func.o
2:和主文件main.c一起生成执行文件的时候
g++ main.c libfunc.a -L -l其他动态库文件
我想问怎么才能只要像下面这样就能生成执行文件?
g++ main.c libfunc.a
也就是说把链接放在 libfunc.a里 , 是改.o文件还是.a文件呢
|
那你把func.o也改成静态的
不然还是要g++ main.c libfunc.a -L -l其他动态库文件
不然还是要g++ main.c libfunc.a -L -l其他动态库文件
|
我不确定 ,而且不能保证func.o又没有调用其他的动态库
不知道g++ -c func.c -static 能不能做到
不知道g++ -c func.c -static 能不能做到
|
编译时没法将.so文件静态编入.o,链接时可以通过-static将.so链入binary中。
|
楼上的楼上的意思是最后连接的时候加上-static把.so动态链接库编入进去,这样在其他机器上使用时就不用使用动态链接库了,而你说的ar cr -static libfunc.a func.o,还是编译阶段