【问题标题】:gcc and linking files with CFLAGSgcc 和使用 CFLAGS 链接文件
【发布时间】:2012-07-26 06:40:30
【问题描述】:

我正在尝试运行 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 在命令末尾添加库文件名?

【问题讨论】:

    标签: gcc makefile


    【解决方案1】:

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

    【讨论】:

    • +1。在 automake 用语中,LIBS 或 LDADD 也是一个常用术语。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-08-05
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      相关资源
      最近更新 更多