发布于2026-07-16 阅读(0)
扫一扫,手机访问
使用GCC编译动态库(共享库),其实比想象中要简单。下面咱们就一步一步来,把整个过程拆解开,保证你看完就能上手操作。

首先,你需要准备好C或C++源文件。假设有两个文件:libexample.c 和它的头文件 libexample.h,内容如下:
libexample.h
#ifndef LIBEXAMPLE_H
#define LIBEXAMPLE_H
void hello_from_libexample();
#endif // LIBEXAMPLE_H
libexample.c
#include
#include "libexample.h"
void hello_from_libexample() {
printf("Hello from libexample!\n");
}
用GCC把每个源文件编译成对象文件(.o 文件),这一步和编译普通程序没什么区别。
gcc -c libexample.c -o libexample.o
对象文件到手后,就可以打包成动态库了。动态库的文件名一般以 lib 开头,扩展名为 .so。关键参数就是 -shared,告诉编译器我们要生成共享库。
gcc -shared -o libexample.so libexample.o
-shared:指定生成共享库。-o libexample.so:指定输出文件名。动态库建好了,接下来写个主程序来调用它。假设主程序叫 main.c:
main.c
#include
#include "libexample.h"
int main() {
hello_from_libexample();
return 0;
}
编译时,需要告诉GCC去哪里找库文件,以及链接哪个库。
gcc main.c -L. -lexample -o myapp
-L.:指定库文件搜索路径为当前目录。-lexample:链接名为 libexample.so 的库(注意命名规则:去掉 lib 前缀和 .so 后缀)。-o myapp:输出可执行文件名为 myapp。运行时,系统需要能找到这个动态库。有两个常用办法:把 libexample.so 复制到系统标准库路径(比如 /usr/lib 或 /usr/local/lib),或者在运行前设置环境变量 LD_LIBRARY_PATH。
export LD_LIBRARY_PATH=.
./myapp
注意:上面的例子假设库就在当前目录,所以把 LD_LIBRARY_PATH 设为当前目录(点号)。实际使用时根据你的路径调整即可。
如果中间文件用不上了,顺手删掉就好。
rm libexample.o libexample.so
整套流程下来,动态库的编译和使用就搞定了。其实核心就两三个命令,记住 -shared 和链接时的命名约定,剩下的都是常规操作。动手试一次,比看十遍都管用。
上一篇:GCC编译器错误怎么解决
下一篇:GCC如何优化循环代码
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8