当前位置: 首页 > 知识库问答 >
问题:

一旦我们编译了一个c程序,如何获取.so文件?[副本]

陶瀚玥
2023-03-14

如何从C程序的编译中生成共享库(.so)文件。我想说,如果我编译一个C程序,我会得到<code>a.out</code>。相反,我可以得到.so文件。

共有2个答案

皇甫乐
2023-03-14

要首先生成共享库,您必须通过指定-fPIC标志来创建正常的二进制. o文件以获得与位置无关的代码。这是必要的,因为库中的每次跳转或调用都将具有相对偏移量,并且当库加载到内存中以供进程使用时,可以重新定位(读取:优化较少,但可在任何地址使用)

然后,通过指定要从对象文件创建库,再次使用gcc

gcc -shared -o library_name.so a.o b.o
孙佑运
2023-03-14

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

gcc -c -fPIC file.c -o file.o

这将生成一个对象文件(.o),现在您需要它并创建.so文件

gcc file.o -shared -o lib_file.so
 类似资料: