首先,始终养成编译的习惯-Wall
(甚至可能also -Wextra
以获得更多警告)选项gcc
;它会给你几乎所有的警告,你应该改进你的代码,直到没有警告为止。
然后你经常希望能够调试你的代码,所以也通过-g
to gcc
。一旦您对自己的代码充满信心,您可以询问gcc
生成优化的机器代码-O2
。学习使用gdb
调试器。
因此,编译您的第一个库,假设它的源文件first1.c
and first2.c
are in FirstLib/
目录,例如
cd FirstLib/
gcc -Wall -g -c first1.c -o first1.o
gcc -Wall -g -c first2.c -o first2.o
此时,您应该使用Makefile
并学习如何使用make
,特别是因为你想得到你的libfirst.a
with
ar ruv libfirst.a first1.o first2.o
ranlib libfirst.a
然后你就可以通过-L../FirstLib -lfirst
作为最后一个选项gcc
使用命令编译和链接您的程序libfirst.a
然后编译你的第二个库Makefile
在目录中SecondLib/
其中很可能应该包含
# in SecondLib/Makefile
CC=gcc
CFLAGS= -I../FirstLib/ -Wall -g
## add your other stuff for make
等等等等。你真的想学习如何使用make
并写你自己的Makefile
-s 所以花点时间阅读GNU make 文档 http://www.gnu.org/software/make/manual/.
你可能想通过-H
to gcc
让它告诉你所有包含的文件,你可能还想使用remake http://bashdb.sourceforge.net/remake/(另外和替换make
)来调试更复杂的Makefile
-s(特别是通过运行remake -x
). Here https://stackoverflow.com/a/16751650/841108是一个例子Makefile
;你会发现很多其他的!
另请阅读程序库指南 http://www.tldp.org/HOWTO/Program-Library-HOWTO/.