linux下创建共享库和静态库
来源:互联网 发布:邯郸学院软件学院 编辑:程序博客网 时间:2024/05/21 06:58
学习笔记:
创建共享库
我的当前目录下有 add.c sub.c main.c
//1
gcc -fPIC -c add.o sub.o // -c 只编译不连接 // -fPIC 参数表示,生成的.o文件 内容都是相对地址*
生成libdong.so.1.1 这个库
gcc -shared -Wl,-soname,libdong.so.1 -o libdong.so.1.1 add.o sub.o // libdong.so.1.1 前面1是大版本号,后面1是小版本号
生成可执行文件
gcc main.c libdong.so.1.1 -o main
//2
然后执行 ./main
会报错:./main: error No such file or directory 找不到库
//3
ldd a.out // ldd 查看 a.out 依赖哪些库?
linux-vdso.so.1 => (0x00007ffce05f6000)
libdong.so.1 => not found 找不到库
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5beda4c000)
/lib64/ld-linux-x86-64.so.2 (0x00005636af218000)
//4
加入库的路径
sudo vim /etc/ld.so.conf
sudo ldconfig -v 更新库
//有几个需要注意的地方
1. /etc/ld.so.conf 中有 include /etc/ld.so.conf.d/*.conf 不能在下一行也写 include 错了都不知道咋错的
下一行直接写 路径
2. /mnt/hgfs/ 中是win和linux共享的 有些东西linux无法访问,无法执行。当初看内核代码也有这个原因
把库copy到别的地方去
创建静态库
//1.使.o文件是以相对路径编译的
gcc -c -fPIC add.c sub.c
//2.创建静态库
ar rcs libmy.a add.o sub.o //ar命令可以用来创建、修改库,也可以从库中提出单个模块
//c:创建一个库。不管库是否存在,都将创建。
//s:写入一个目标文件索引到库中,或者更新一个存在的目标文件索引。
nm libmy.a看一下文件的符号
//3.使用库
gcc main.c ./lib/libmy.a -o main
./main
- linux下创建共享库和静态库
- linux下的C语言共享库和静态库的创建和使用
- Linux下的静态库和共享库的创建和使用
- Linux下的静态库,共享库的创建和使用
- Linux下创建和使用静态库、共享库的方法总结
- uc下的静态库和共享库创建方式
- Linux下静态库和动态库(共享库)
- linux下的共享库和静态库
- 【入门教程】Linux下静态库和共享库的制作方法
- Linux下静态库和共享库的制作方法
- linux下静态库和共享库简介
- linux下c的共享库和静态库
- linux/unix下的静态库和共享库
- linux 下 -------- 创建和调用动态共享库(.so)
- Linux下共享库的创建和使用示例
- [转载] linux下创建和使用静态和动态库
- Linux下创建和使用静态和动态库
- linux静态库和共享库
- Java学习之集合元素删除
- mac 中docker安装mysql
- JMockit概述
- vtk医学图像三维重建
- Maven+Nexus+Myeclipse集成
- linux下创建共享库和静态库
- 初入嵌入式
- Java数据结构-LinkedHashmap
- 【miscellaneous】海康相机RTSP连接代码分析
- activity之间的intent传值
- Linux c==sqlite3(8)
- //初学java中了解到的两种控制台输出的方法
- Linux网络编程经典书籍推荐
- 详解泛型擦除