商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > GCC编译动态库的流程是什么

GCC编译动态库的流程是什么

  发布于2026-07-16 阅读(0)

扫一扫,手机访问

使用GCC编译动态库(共享库),其实比想象中要简单。下面咱们就一步一步来,把整个过程拆解开,保证你看完就能上手操作。

GCC编译动态库的流程是什么

1. 编写源代码

首先,你需要准备好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");
}

2. 编译源文件为对象文件

用GCC把每个源文件编译成对象文件(.o 文件),这一步和编译普通程序没什么区别。

gcc -c libexample.c -o libexample.o

3. 创建动态库

对象文件到手后,就可以打包成动态库了。动态库的文件名一般以 lib 开头,扩展名为 .so。关键参数就是 -shared,告诉编译器我们要生成共享库。

gcc -shared -o libexample.so libexample.o
  • -shared:指定生成共享库。
  • -o libexample.so:指定输出文件名。

4. 使用动态库

动态库建好了,接下来写个主程序来调用它。假设主程序叫 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

5. 运行应用程序

运行时,系统需要能找到这个动态库。有两个常用办法:把 libexample.so 复制到系统标准库路径(比如 /usr/lib/usr/local/lib),或者在运行前设置环境变量 LD_LIBRARY_PATH

export LD_LIBRARY_PATH=.
./myapp

注意:上面的例子假设库就在当前目录,所以把 LD_LIBRARY_PATH 设为当前目录(点号)。实际使用时根据你的路径调整即可。

6. 清理

如果中间文件用不上了,顺手删掉就好。

rm libexample.o libexample.so

总结

  1. 编写源代码。
  2. 编译源文件为对象文件。
  3. 创建动态库。
  4. 编译主程序并链接动态库。
  5. 运行应用程序。
  6. 清理中间文件。

整套流程下来,动态库的编译和使用就搞定了。其实核心就两三个命令,记住 -shared 和链接时的命名约定,剩下的都是常规操作。动手试一次,比看十遍都管用。

本文转载于:https://www.yisu.com/ask/50092142.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注