1

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

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

例如:

在 Ubuntu 上不起作用:

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

在 Ubuntu 上工作:

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

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

4

2 回答 2

3

CFLAGS 是 C 编译器的标志。库通常进入一个名为 LDLIBS 的变量。设置 LDLIBS=build/liblcthw.a 看看是否可行。

于 2012-07-26T06:50:33.417 回答
1

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

于 2012-07-26T08:40:24.383 回答