目录
静态库的创建:
写一个简单的程序来实现一下效果,内容如下:
vim static.c
#include<stdio.h>
int main()
{
int x,y;
int ret;
x=63;
y=24;
ret=fun(x,y);
printf("ret = %d\n",ret);
return 0;
}
vim fun.c
int fun(int x,int y)
{
int ret;
return ret=x-y;
}
生成目标文件:
gcc fun.c -c -o fun.o
静态库创建:
ar -cr -o libfun.a fun.o
静态库的编译:
gcc static.c -L. -lfun
./a.out //执行结果为39
动态库的创建:
生成目标文件:gcc -c -o fun.o fun.c
生成动态函数库:gcc -fpic -shared -o libfun.so fun.o //生成了libfun.so
生成可执行程序:gcc -o fun main.c -L. -lfun
第一种方法: libaddfun.so放到/usr/lib 或/lib中去。
操作:
sudo mv libfun.so /usr/lib
cd /usr/lib
ls -l *.so //查看.so文件
./fun //可以看到执行的结果
第二种方法:
假设libfile.so在/home/linux/file 环境变量方法 export LD_LIBRARY_PATH=/home/linux/addsub:$LD_LIBRARY_PATH
操作:
sudo mv libfun.so /home/xp/ //将/usr/lib目录下的libfun.so移过来
export LD_LIBRARY_PATH=/home/xp/
echo $LD_LIBRARY_PATH //看一下环境变量是否为当前目录下的环境变量
./fun //可以看到执行的结果
把终端关掉环境变量就不存在了
echo $LD_LIBRARY_PATH
第三种方法:
在/etc/ld.so.conf文件里加入我们生成的库的目录,然后/sbin/ldconfig。 /etc/ld.so.conf是非常重要的一个目录,里面存放的是链接器和加载器搜索共享库时要检查的目录,默认是 从/usr/lib /lib中读取的,所以想要顺利运行,可以把我们库的目录加入到这个文件中并执行/sbin/ldconfig。
操作:
在/etc/ld.so.conf文件里加入我们生成的库的目录
sudo vi /etc/ld.so.conf //添加:/home/xp
sudo ldconfig /etc/ld.so.conf //编译
./fun