静态库和动态库的创建和使用
来源:互联网 发布:rabbitmq php amqp 编辑:程序博客网 时间:2024/06/03 17:39
反汇编指令: 1. gcc x.c -g -o x; 2、objdump -S -d ./hello。-g是为了添加调试信息,objdump中的-S选项 为了在显示汇编代码的时候同时显示原来的C语言源代码程序。
静态链接库:以lib*.a(linux系统下)命名; 编译时使用,执行时可以删除;实际上就是多个.o文件的压缩包。执行命令: ar crv lib*.a x1.o x2.o
调用命令: gcc y.c -o y -l*(链接)
动态链接库:以lib*.so(Linux系统)命名;执行时使用,不可删除;可以共享内存资源,减少内存消耗,,可以减少链接次数(补丁多以动态库发布);
执行命令: gcc -shared -fPCI -o lib*.so x1.o x2.o
调用命令: gcc y.c -o y -L. -l* (*为库名) ;-L指明库的路径,-l指明库的名称
ps:通过设置将库添加到文件可找到的位置,防止出现路径错误
linux下动态库(.so)文件默认的查找路径:/lib和/usr/lib和/usr/local/lib 里的库直接用-l参数就能链接;
程序编译连接,程序运行都需要知道动态库所在位置。"-L"参数可以指定编译连接时的库文件路径,无法提供程序运行时库文件的路径。可以采用下面方法来提供:
(方法1)使用环境变量LD_LIBRARY_PATH,命令如下:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/yangxt/demo
(方法2)将所用到的动态库文件放到/usr/lib目录下;
(方法3)可以在/usr/lib目录下创建软连接,连接到你自己目录下的动态库,命令如下:
ln -s /home/yangxt/demo/libmydyn.so /usr/lib/libmydyn.so # ln -s 源文件 目标文件
这样就在/usr/lib目录下创建了一个指向/home/yangxt/demo/libmydyn.so动态库的软连接;
(方法4)修改"vi /etc/ld.so.conf"文件,添加你自己的动态库文件路径,内容如下:
include ld.so.conf.d/*.conf
/home/yangxt/demo #你自己的动态库文件路径
添加完成之后,使用"ldconfig"重新加载配置文件使之生效。
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- 静态库和动态库的创建和使用
- 静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- Leetcode 718. Maximum Length of Repeated Subarray
- JavaWeb学习心得之JDBC对数据库CRUD
- 基于mysql数据库的基础知识三
- django系列 第一节
- 00-Appium
- 静态库和动态库的创建和使用
- HTTP 状态码
- java鬼混笔记:Hibernate:8、Hibernate BaseDao批量添加
- 如何在英文中文混合的段落里摘出中文
- maven项目在eclipse启动报错:java.lang.ClassNotFoundException
- excel中如何实现自动求和?
- JAVA-数组篇
- [枚举] POJ 3279
- codecademy SQL 编程系列四Update, Alter,Delete,Constrains,Generalizations