我尝试将C库集成到我的项目中。该项目的自定义makefile尝试将所有源文件,每个文件编译成一个目标文件(*.o
)。
我需要将所有这些*.o
文件链接到一个文件中,例如so
文件,以便于使用它。我需要这个吗?如果是,我如何将所有*.o
文件链接到一个库文件中。我将添加哪些行到Makefile?
(注意,这个C库包含很多子目录,一个大的makefile将进入所有子目录,并在每个目录中使用Makefile来运行它)
谢谢:)
答案 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及其符号链接。