linux 库编译和使用笔记

来源:互联网 发布:星宇记账软件 编辑:程序博客网 时间:2024/06/09 17:10
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



0 0
原创粉丝点击