linux 库编译和使用笔记

本文详细介绍了C语言中静态库和动态库的编译过程及使用方法,包括生成.o文件、创建静态库arrslibmath.a、调用库函数等步骤,并阐述了动态库的编译、生成.so文件、修改动态库路径和库命名原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


src(.c文件) inc(头文件) main.c add.c mul.c sub.c

静态库编译和使用
1.gcc -c *.c(生成.o)
2.ar rs libmath.a *.o
3.gcc main.c -L /home/ -l math -I ./inc -o app
4../app
r代表打包到静态库的文件列表s专用于生成静态库
动态库编译和使用(只共享代码 不共享数据)
-fPIC表示 生成与位置无关的代码/相对路径)
-g 代表可以用gdb调试
1.gcc -c -g -fPIC *.c
2.gcc -shared *.o -o libmath.so(gcc -shared -o libmath.so *.o )
3.gcc main.c -L /home/ -l math -I inc -o app
动态库路径修改:1.export LD_LIBRARY_PATH = ./;
        2.vi ~/.bashrc export LD_LIBRARY_PATH = /home/;重启终端
        3.vi sudo vi /etc/ld.so.conf然后添加路径 sudo ldconfig -v(更新缓存文件)
        4.cp libmath.so /usr/lib或cp libmath.so /lib
        5.gcc main.c -g -L. -lmath -I ./inc -o app -Wl,-rpath /home/akaedu/bxd
库命名:
soname:访问real name 可以通过soname访问 soname是符号链接只包含共享库的主版本号
linker name 编译时提供给链接器使用.so结尾
real name包含完整的库版本。

创建linker name
in -s libmath.so.1.21 libmath.so
gcc main.c -L . -lmath -I ./inc -o app



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值