linux下生成.so文件和.a文件

test.h

复制代码
1 #ifndef _TEST_H_
2 #define _TEST_H_
3 
4 void TestA();
5 void TestB();
6 
7 #endif
复制代码



test_a.cpp

复制代码
1 #include <stdio.h>
2 #include "test.h"
3 
4 void TestA()
5 {
6     printf("TestA func\n");
7 }
复制代码



test_b.cpp

复制代码
1 #include <stdio.h>
2 #include "test.h"
3 
4 void TestB()
5 {
6     printf("TestB func\n");
7 }
复制代码



生成so文件的命令

g++ test_a.cpp test_b.cpp -fPIC -shared -o libtest.so

生成.a文件的命令

1 gcc -c test_a.cpp
2 gcc -c test_b.cpp
3 ar -r libtest.a test_a.o test_b.o




test.cpp

复制代码
1 #include "test.h"
2 
3 int main()
4 {
5     TestA();
6     TestB();
7 
8     return 0;
9 }
复制代码



采用动态库编译命令

g++ test.cpp -o test -L. -ltest



执行

export LD_LIBRARY_PATH=./
./test

执行结果如下。

 

采用静态库编译命令

g++ -static -o test -L. -ltest test.cpp

执行效果


静态库的嵌套调用,有时候我想做一个自己的静态库,它里面要调用其他静态库里面的函数,经过试验

这个好像用ar -r不行,所以就在链接的时候需要两个库文件都包含,同时要有这一个头文件才行。。。


转自:http://www.cnblogs.com/tzhangofseu/archive/2011/11/15/2249585.html

阅读更多
个人分类: C/C++
上一篇造成segment fault,产生core dump的可能原因
下一篇git使用总结
想对作者说点什么? 我来说一句

AndroidStudio 编译C/C++文件生成SO文件

2016年01月20日 10.45MB 下载

so文件生成与使用

2017年11月02日 3.24MB 下载

mac os x将C文件编译成.so库

2016年12月29日 7KB 下载

zbar 动态库文件以及jar包

2015年01月29日 717KB 下载

使用eclipse直接生成so文件

2015年10月03日 4.34MB 下载

hdf5 Linux下的安装包 以及make文件

2011年07月20日 6.75MB 下载

Linux下 Qt创建.so与调用

2015年10月20日 19KB 下载

Android通过JNI调用.so动态库

2014年08月28日 139KB 下载

没有更多推荐了,返回首页

关闭
关闭