我正在尝试从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在命令末尾添加库文件名?
答案 0 :(得分:3)
CFLAGS是C编译器的标志。库通常会进入名为LDLIBS的变量。设置LDLIBS = build / liblcthw.a并查看是否有效。
答案 1 :(得分:1)
第一次调用不成功,因为命令行中的源和库的顺序是错误的。正确的顺序是源文件,然后是目标文件,然后是静态库,后跟动态库。