博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用GCC编译器生成动态链接库和静态链接库
阅读量:6289 次
发布时间:2019-06-22

本文共 755 字,大约阅读时间需要 2 分钟。

转载请标明: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

转载于:https://www.cnblogs.com/winifred-tang94/p/5838324.html

你可能感兴趣的文章
概率论与数理统计习题
查看>>
初学structs2,简单配置
查看>>
Laravel5.0学习--01 入门
查看>>
时间戳解读
查看>>
sbin/hadoop-daemon.sh: line 165: /tmp/hadoop-hxsyl-journalnode.pid: Permission denied
查看>>
@RequestMapping 用法详解之地址映射
查看>>
254页PPT!这是一份写给NLP研究者的编程指南
查看>>
《Data Warehouse in Action》
查看>>
String 源码浅析(一)
查看>>
Spring Boot 最佳实践(三)模板引擎FreeMarker集成
查看>>
Fescar 发布 0.2.3 版本,支持 Redis 和 Apollo
查看>>
Google MapReduce到底解决什么问题?
查看>>
CCNP-6 OSPF试验2(BSCI)
查看>>
Excel 2013 全新的图表体验
查看>>
openstack 制作大于2TB根分区自动扩容的CENTOS镜像
查看>>
Unbuntu安装遭遇 vmware上的Easy install模式
查看>>
几个常用的ASP木马
查看>>
python分析postfix邮件日志的状态
查看>>
Mysql-5.6.x多实例配置
查看>>
psutil
查看>>