gcc和链接文件与CFLAGS

时间:2012-07-26 06:40:31

标签: gcc makefile

我正在尝试从Learn C Hard Way书中运行程序

我需要将库文件名'build / liblcthw.a'作为最后一个参数传递。

例如:

无法在Ubuntu上运行:

gcc -g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG build / liblcthw.a tests / list_tests.c -o tests / list_tests

适用于Ubuntu:

gcc -g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG tests / list_tests.c -o tests / list_tests build / liblcthw.a

如何在Makefile中处理此问题? CFLAGS只会在源文件名之前添加它,它不起作用。如何强制CFALGS在命令末尾添加库文件名?

2 个答案:

答案 0 :(得分:3)

CFLAGS是C编译器的标志。库通常会进入名为LDLIBS的变量。设置LDLIBS = build / liblcthw.a并查看是否有效。

答案 1 :(得分:1)

第一次调用不成功,因为命令行中的源和库的顺序是错误的。正确的顺序是源文件,然后是目标文件,然后是静态库,后跟动态库。