静态链接
(1)制作静态链接
#生成目标文件
gcc -c add.c -o add.o
gcc -c sub.c -o sub.o
#制作静态库
ar -rcs libmylib.a add.o sub.o
在使用ar工具是时候需要添加参数:rcs
- r更新
- c创建
- s建立索引
(2)使用静态库
gcc main.c -L[静态库路径] -I[头文件路径] -lmylib[库名] -o main
参数说明:
- -L:表示要连接的库所在目录
- -I./: I(大写i) 表示指定头文件的目录为当前目录
- -l(小写L):指定链接时需要的库,去掉前缀和后缀
动态链接
(1)动态库制作
gcc -fPIC -c add.c -o add.o
gcc -fPIC -c sub.c -o add.o
#-fpic 创建与地址无关的目标文件
gcc -shared add.o sub.o -o libmylib.so
#生成共享库,-shared
(2)动态库使用
gcc main.c -L[动态库路径] -I[头文件路径] -lmylib[库名] -o main
(3)让系统找到动态库
-
拷贝自己制作的共享库到/lib或者/usr/lib(不能是/lib64目录)
-
临时设置LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径
-
永久设置,把
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径
,设置到~/.bashrc
或者/etc/profile
文件中vim ~/.bashrc #最后一行添加如下内容: #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/mylib/ source ~/.bashrc
-
使用符号链接, 但是一定要使用绝对路径
sudo ln -s /home/me/mylib/libtest.so /lib/libtest.so