使用gcc命令行从.c文件构建.so文件


162

我正在尝试为Linux动态库(.so文件)创建一个hello world项目。所以我有一个文件hello.c:

#include <stdio.h>
void hello()
{
    printf("Hello world!\n");
}

如何hello()在命令行中使用gcc 创建导出的.so文件?

Answers:


291

要生成共享库,您首先需要使用-fPIC(位置无关代码)标志来编译C代码。

gcc -c -fPIC hello.c -o hello.o

这将生成一个目标文件(.o),现在您将其创建并创建.so文件:

gcc hello.o -shared -o libhello.so

编辑:来自评论的建议:

您可以使用

gcc -shared -o libhello.so -fPIC hello.c

一步就能做到。– 乔纳森·勒夫勒

我还建议添加-Wall来获取所有警告和-g调试信息gcc。– 巴西尔·斯塔林凯维奇


1
您必须先执行gcc -c -fPIC blabla.c -o blabla.o,然后执行上述命令。
dreamcrash

57
gcc -shared -o libhello.so -fPIC hello.c一步一步完成。
Jonathan Leffler

5
我还建议添加-Wall来获取所有警告和-g调试信息gcc
Basile Starynkevitch

感谢您的建议,我将它们添加到了答案
dreamcrash 2013年

3
.o在将它们链接到最终可执行文件之前,@ sashoalm 文件基本上是源文件的目标文件。因此,当您运行gcc -o abc.c abc.o目标文件时,将生成该文件。然后您可以使用此abc.o文件创建.so文件。要创建这么多文件,您只需要在.c文件中编写正确的C代码即可。PS:只是为了消除您在评论中的疑问。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.