打算转行做C语言开发,最基本的库的概念不是太了解,现在梳理一下。
Linux下有两种库:静态库和动态库
基本概念:
1、静态库
在程序编译时会被拷贝到目标代码中,运行时不再需要。
2、动态库
在编译时不会被拷贝到目标代码中,在程序运行时才被载入。
特点:
如何生成:
1、动态库:
$ gcc -shared -fPIC -o libbeijing.so bijing.o
-shared: 指定生成动态链接库
-fPIC:函数变量编译为位置独立的代码。
2、静态库
$ ar rcs libbeijing.a beijing.o
如何调用:
1、静态库
gcc -o beijing -lm -L. beijing.o
参数: -static
-L.:告诉gcc 现在当前目录下查找数据库。
-lbeijing:静态库名。
2、动态库
-L.:告诉gcc 现在当前目录下查找数据库。
-lbeijing:静态库名。
gcc -o beijing -lm -L. beijing.o
常用命令:
1、ldd 查看一个可执行程序依赖的共享库。
2、如果在/lib 、/usr/lib、ld默认能找到。如安装在其他目录,需要添加到/etc/ld.so.cache文件中。
2.1 echo dir >> /etc/ld.so.conf文件
2.2 运行ldcofig,重建/etc/ld.so.cache。