【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
warning:
这篇文章距离上次修改已过440天,其中的内容可能已经有所变动。
在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/等。
评论已关闭