【发布时间】:2015-01-16 22:33:05
【问题描述】:
静态库在命令行中可以很好地链接,但不是通过 makefile。编译访问包含文件的部分似乎没问题,但是makefile中的ld进程一定是错误的。 提前感谢您的帮助!
这是我的命令行:
gcc -o quadEq.exe quadEq.c -I../include -L../lib -lnowic
这是我的 Makefile:
CFLAGS = -Wall -g -c
INCLUDE = -I../include
LDFLAGS = -L../lib
LDLIBS = -lnowic
SOURCES = quadEq.c
OBJECTS = $(SOURCES:.c=.o)
EXE = quadEq
all: $(SOURCES) $(EXE)
$(EXE): $(OBJECTS)
gcc $(OBJECTS) $(LDFLAGS) $(LDLIBS) -o $@
.c.o:
gcc $(CFLAGS) $(INCLUDE) $< -o $@
这是我运行 Makefile 和命令行的屏幕截图。
【问题讨论】:
-
在链接步骤中,库必须在最后。库的顺序很重要,除非库被分组,类似于:'gcc -Wl,--start-group
-Wl,--end-group'