C:如何将所有o文件链接到一个文件中

时间:2014-04-11 09:50:24

标签: c gcc linker makefile

我尝试将C库集成到我的项目中。该项目的自定义makefile尝试将所有源文件,每个文件编译成一个目标文件(*.o)。

我需要将所有这些*.o文件链接到一个文件中,例如so文件,以便于使用它。我需要这个吗?如果是,我如何将所有*.o文件链接到一个库文件中。我将添加哪些行到Makefile?

(注意,这个C库包含很多子目录,一个大的makefile将进入所有子目录,并在每个目录中使用Makefile来运行它)

谢谢:)

1 个答案:

答案 0 :(得分:2)

看到这是最好的document

让我们看看我有2个.o文件。 ctest1.o ctest2.o 所以我将按照以下方式制作静态库。

ar -cvq libctest.a ctest1.o ctest2.o

对于动态.so文件

gcc -Wall -fPIC -c *.c
gcc -shared -Wl,-soname,libctest.so.1 -o libctest.so.1.0   *.o
mv libctest.so.1.0 /opt/lib
ln -sf /opt/lib/libctest.so.1.0 /opt/lib/libctest.so.1
ln -sf /opt/lib/libctest.so.1.0 /opt/lib/libctest.so

这将创建库libctest.so.1.0及其符号链接。