我有一个用C99 C编写的简单modbus主项目。现在我正在编译我的应用程序(它很好用):
$ gcc -std=c99 -O2 -Wall -I/usr/include/modbus test.c -o test -L/usr/lib/modbus -L/usr/include/curl -lmodbus -lm -lcurl
我想写经典的Makefile。我试试这个:
CFLAGS=-std=c99 -O2 -Wall -I/usr/include/modbus
LDFLAGS=-L/usr/lib/modbus -L/usr/include/curl -lmodbus -lm -lcurl
test: test.o
$(CC) $(LDFLAGS) test.o -o test
test.o: test.c
$(CC) $(CFLAGS) -c test.c
clean:
rm *.o test
但如果我运行make
,它会崩溃:
cc -L/usr/lib/modbus -L/usr/include/curl -lmodbus -lm -lcurl test.o -o test
test.o: In function `myFunction':
test.c:(.text+0x80): undefined reference to `log'
哪里有错误? CFLAGS
和LDFLAGS
之间有什么区别? CFLAGS
用于编译器,LDFLAGS
用于链接器?如何从我的第一个gcc
命令确定什么是编译器的参数,哪个是链接器?