利用GCC编译器生成动态链接库和静态链接库
2024-10-16 06:28:15
转载请标明:http://www.cnblogs.com/winifred-tang94/
1、编译过程
gcc –fPIC –c xxx.c
其中-fPIC是通知gcc编译器产生位置独立的目标代码。链接的时候不通过拷贝来进行。
2、链接过程
gcc –shared –o libxxx.so xxx.o
经过编译链接就可以生成动态链接库,其扩展名为.so
Eg.
还可以gcc –fPIC –shared -o libhello.so hello.c
举个例子:
//Hello.h
//hello.c
//main.c
先生成动态链接库
然后编译链接main.c
但是把-lhello放在文件名后面就没有问题了,并生成了一个main执行文件:
运行执行文件的时候出现了以下问题:
原因可能是程序运行时并不知道动态库所在的路径,因此自然未找到。
解决方法:
拷贝动态链接库到系统共享目录下,或在系统共享目录下为该动态链接库建立连接(硬连接或符号连接均可,常用符号连接)。
其中ldconfig是为了让动态链接库为系统所共享。
动态链接库被系统所共享以后,再运行main,得到结果如下:
利用GCC编译器生成静态链接库
用个例子来说明如何在gcc编译器中生成静态链接库
//Hello.h
//hello.c
//main.c
首先gcc –c hello.c文件生成hello.o
然后利用hello.o生成静态链接库,利用
ar –rc –o libhello.a hello.o
或者利用 ar rcs –o libhello.a hello.o
然后利用静态链接库编译链接main.c
最新文章
- MySql数据库忘记root密码
- bootstrap如何给.list-group加上序号
- python类的特性
- android 项目学习随笔十九(MD5)
- JavaScript数学揭密之函数与勾股定理
- (13)odoo翻译
- UI:UITableView表视图
- [一]初识Ajax
- hdu_5883_The Best Path(欧拉路)
- 1630/2023: [Usaco2005 Nov]Ant Counting 数蚂蚁
- SQL Server中INNER JOIN与子查询IN的性能测试
- java语言插入数组中一个数,仍然能够实现排序
- neo4j-cypher
- jq动画实现左右滑动
- Java Web——过滤器
- 04: nginx部署vue
- BZOJ2721 Violet5樱花(数论)
- java struts2入门学习---国际化
- javascript的fn方法(转)
- Linux 系统的/目录