【问题标题】:Using glib in C - correct invocation of pkg-config in a Makefile在 C 中使用 glib - 在 Makefile 中正确调用 pkg-config
【发布时间】:2015-10-08 22:32:04
【问题描述】:

我正在尝试在 C 中创建一个 Web 服务器。我正在使用 glib 库,该库包含在我的 .c 文件中,语法如下:

#include <glib.h>

为了能够使用该库,我在 Makefile 中添加了以下两行:

CFLAGS = 'pkg-config --cflags glib-2.0'
LDLIBS = 'pkg-config --libs glib-2.0'

但是当我从 Shell 编译时,我收到以下错误消息

gcc 'pkg-config --cflags glib-2.0'    httpd.c  'pkg-config --libs glib-2.0' -o httpd
gcc: error: pkg-config --cflags glib-2.0: No such file or directory
gcc: error: pkg-config --libs glib-2.0: No such file or directory
make: *** [httpd] Error 1

有没有人知道这个问题的解决方案?

【问题讨论】:

  • 将库安装在编译器查找它们的位置!并使用正确的选项。至少在 4.9.3 之前的 gcc 没有这样的选项。

标签: shell makefile pkg-config


【解决方案1】:

pkg-config 是一种用于将所需的 CFLAGSLIBS 打印到标准输出的工具,所以我在这里看到了一种“双重错误”:

  1. 你可能读到的是给了一个像CFLAGS = `pkg-config --cflags glib-2.0` 这样的参数来制作。注意这里的 反引号,它们告诉 shell 运行命令并将整个结构替换为该命令的输出(shell 的替代语法是 $())。

  2. 即使使用反引号,这在与sh 语法不同的 Makefile 中也不起作用。 GNU make 中对应的构造是$(shell ),所以只需写CFLAGS = $(shell pkg-config --cflags glib-2.0)

【讨论】:

    【解决方案2】:

    根据您使用的品牌,您可能只需要:

    CFLAGS = $(shell pkg-config --cflags glib-2.0)
    LDLIBS = $(shell pkg-config --libs glib-2.0)
    

    【讨论】:

      猜你喜欢
      • 2012-08-29
      • 2011-04-27
      • 1970-01-01
      • 2015-04-16
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 2011-11-27
      相关资源
      最近更新 更多