c 编译动态库
来源:互联网 发布:有杆泵优化实用工具 编辑:程序博客网 时间:2024/05/21 10:31
编译自己的动态库 *.so
1.动态库源文件
vi a.c
#include <stdio.h>
void a(char *s)
{
printf("%s\n",s);
}
gcc -shared -fPIC a.c -o liba.so 生成 liba.so 动态库文件
其中 -shared 参数指定生成动态库
-fPIC 表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的,所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,不能达到真正代码段共享的目的。
2.调用动态库的程序
vi b.c
int main()
{
a("hello world!");
}
gcc b.c -L./ -wl,-rpath=./ -la 生成可执行文件a.out,其中调用了动态库liba.so中的a函数。
其中 -L./ 表示链接器在链接时在当前目录找需要的函数库。
-wl,-rpath=./ -wl表示向链接器传进参数,参数为-rpath=./ 表示运行时从当前目录找需要链接的函数库。当指定多个路径时,用" :“相隔。
还可以通过修改 LD_LIBRARY_PATH来完成,例如 export LD_LIBRARY_PATH=LD_LIBRARY_PATH:./ //即原路径加上当前目录
-la 表示要链接的函数库为liba.so
./a.out 运行结果为 hello world!
0 0
- c 编译动态库
- C编译: 动态连接库 (.so文件)
- 有关turbo c编译动态库
- C编译: 动态连接库 (.so文件)
- C编译: 动态连接库 (.so文件)
- C语言编译动态或者 静态库
- C编译: 动态连接库 (.so文件)
- C编译: 动态连接库 (.so文件)
- C编译: 动态连接库 (.so文件)
- C编译: 动态连接库 (.so文件)
- 【编译DLL动态库】使用VS2013编译C语言动态链接库
- linux 静态库 动态库 编译C程序
- Linux中C/C++动态库、静态库编译
- C语言如何编译动态库与静态库
- openssl-1.0.1c交叉编译动态库
- 【基础知识】linux c 编译链接运行、动态链接库
- 【linux c开发】GCC 编译链接后找不到动态库
- c/c++基础(十七) 编译与加载 动态库(.so)
- 牛X的贝塞尔曲线
- xapian编译全过程
- hdu 1598 find the most comfortable road
- 1 iOS概述,MVC,Objective-C(2)
- 快捷键大全
- c 编译动态库
- Oracle基础知识笔记(4) 简单查询、限定查询、数据的排序
- DataUml Design 介绍9 - DataUML 1.3版本功能(查询分析器功能等)
- Hadoop提供的reduce函数中Iterable 接口只能遍历一次的问题
- 教师兼干部类
- 轻风送暖写诗意,梅雨传情送祝福
- CareerCup之2.1无序链表删除重复元素
- 这段代码哪里内存溢出了呢?
- Oracle基础知识笔记(5) 单行函数