编译c程序后如何获取.so文件?

时间:2013-12-27 12:36:28

标签: c gcc

如何从C程序的编译中生成共享库(.so)文件。我想说如果我编译一个C程序,我会得到a.out。而不是我怎么能得到.so文件。

2 个答案:

答案 0 :(得分:4)

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

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

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

gcc file.o -shared -o lib_file.so

答案 1 :(得分:4)

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

然后再次使用gcc指定要从目标文件创建库:

gcc -shared -o library_name.so a.o b.o