【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
在Linux环境下,动态库和静态库的制作与使用是非常常见的操作。下面我将分别给出动态库和静态库的制作和使用方法。
- 动态库的制作
首先,我们需要编写一个源文件,例如lib.c
,然后编译这个源文件,并使用gcc
命令来创建动态库。
// lib.c
int add(int a, int b) {
return a + b;
}
编译这个源文件,并创建动态库:
gcc -shared -o lib.so lib.c
- 静态库的制作
首先,我们需要编写一个源文件,例如lib.c
,然后编译这个源文件,并使用ar
命令来创建静态库。
// lib.c
int add(int a, int b) {
return a + b;
}
编译这个源文件,并创建静态库:
gcc -c lib.c
ar rcs lib.a lib.o
- 动态库和静态库的使用
假设我们已经有了lib.so
和lib.a
,我们可以在其他的程序中使用这些库。
例如,我们有一个main.c
文件,它调用了lib.so
中的add
函数:
// main.c
int add(int a, int b);
int main() {
int result = add(2, 3);
printf("Result: %d\n", result);
return 0;
}
编译并链接这个程序:
gcc -o main main.c -L. -llib
在这个例子中,-L.
指定了库的搜索路径,-llib
指定了链接lib.so
库。
如果我们想链接静态库,我们可以这样做:
gcc -o main main.c ./lib.a
- 动态库和静态库在系统中的配置
动态库可以被系统中的所有程序共享,因此它们通常被放置在系统的标准库路径下,如/usr/lib
或/lib
。
静态库则是在编译时直接嵌入到程序中,因此它们通常不需要特别的配置。
在系统中配置动态库通常需要两个步骤:
- 将动态库文件复制到系统的库路径下。
- 更新系统的库缓存。
例如,如果我们想将lib.so
安装到/usr/lib
下,我们可以这样做:
sudo cp lib.so /usr/lib
sudo ldconfig /usr/lib
这样,lib.so
就可以被系统中的所有程序共享了。
注意:在实际的开发中,动态库的配置可能会更复杂,可能需要设置环境变量LD_LIBRARY_PATH
或者修改配置文件/etc/ld.so.conf
和/etc/ld.so.conf.d/
等。
评论已关闭