我正在尝试理解静态库和共享库。
我想通过创建一个makefile来实现分开编译和链接并创建一个静态库,最终以形成最终的静态可执行文件。
我有以下Makefile代码,但是我得到了以下错误:
Makefile:13: *** missing separator. Stop.
但我也在尝试了解如何实际链接/创建库。
如果我在终端中运行line 12
之后的命令,它们可以工作,但在makefile中不行。
myProgram: main.o addSorted.o freeLinks.o
gcc -lm -o myProgram main.o addSorted.o freeLinks.o
main.o: main.c
gcc -O -c -lm main.c main.h
addSorted.o: addSorted.c addSorted.h
gcc -O -c -lm addSorted.c
freeLinks.o: freeLinks.c freeLinks.h
gcc -O -c -lm freeLinks.c
ar rc libmylib.a main.o addSorted.o freeLinks.o //Error Line
ranlib libmylib.a
gcc -o foo -L. -lmylib foo.o
clean:
rm -f myProgram main.o addSorted.o freeLinks.o
此外,如果您能帮助改善代码,我会非常感激。
ar
、ranlib
和gcc
应该是为了哪个目标而定义的配方? - Etan ReisnermyProgram
。这就是为什么我需要帮助。另外,我遇到错误的那一行没有包含tab
。 - user3337714mylib.a
,左对齐),然后是两行以“制表符”开头的命令(ar rc libmylib.a main.o addSorted.o freeLinks.o
,然后是ranlib libmylib.a
)。这两行必须连续(不能有空行)。这里有一个好的教程:一个简单的Makefile教程。 - paulsm4