Linux 使用静态库注意事项
2023-09-11 14:19:34 时间
1. 静态库一定要放在生成文件后面
gcc main.c -o main libhello.a
2. 使用静态库时一定要连接所有用到的静态库
gcc main.c -o main liba.a libb.a libc.a
a依赖于b, b依赖于c; 注意多个连接静态库的顺序 规则:越底层的库放在越后面
3. 静态库动态库相结合使用
gcc main.c –L/usr/local/lib –lworld –o main liba.a
4. 静态库链接顺序例子
1. world.c
#include<stdio.h> void world(void) { printf("world!\n"); }
2. hello.c
#include<stdio.h> void world(void); void hello(void) { printf("hello.\n"); world(); }
4. main.c
void main()
{
hello();
}
5. 编译成目标文件
gcc -c hello.c world.c
6.生成静态库
ar -crv libhw.a hello.o world.o
7. 调用静态库生成可执行文件
gcc -o main main.c libhw.a
8. 错误链接方式
生成对象和静态库顺序错误
静态类库在链接时候顺序不对,libhello.a 依赖于libworld.a
总结如下:
1. 静态库和动态库中只有你写的代码,你所调用的所有外部函数的代码都不会编译到静态库中,所有编译动态库和静态库时,不需要指定其他库的库文件路径,只需要指定其他库的头文件路径即可;
2. 链接静态库的顺序一定是从新到旧,动态库链接顺序没有要求
3. 静态库位于生成对象之后
相关文章
- linux 切换root账号_LINUX 创建用户及切换用户
- cron Error: bad username; while reading /etc/cron.d file on Linux
- Linux中的库(静态库和动态库)详解
- 【Linux】/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
- Linux - 静态配置ip地址
- docker在linux中的安装
- 为Linux服务器设置静态IP的方法
- linux安装 rsync 客户端和相关权限认证
- Linux系统swap已分区但无法挂载与cryptswap1问题
- Linux、Windows静态编译ffmpeg 4.4.1、x264、x265等编解码库的脚本
- Linux—linux 查看一个文件有多少M
- Linux-centos7设置静态IP地址
- Linux | 编译器gcc/g++的使用【动静态库的认识】
- Linux 下Shell的学习3-优秀demo
- linux下一个rsync工具和配置
- Linux设置静态IP
- Linux学习笔记(25)linux批量管理
- Linux学习笔记(24)linux发邮件 mailx发邮件
- linux的dd命令