【问题标题】:C programs linked with library与库链接的 C 程序
【发布时间】:2017-11-19 17:08:33
【问题描述】:

我正在尝试将库链接到我的 C 程序,但我无法使其工作 根据图书馆文档https://jansson.readthedocs.io/en/latest/gettingstarted.html#compiling-and-installing-jansson 我所要做的就是把 pkg-config --cflags --libs jansson 在 Makefile 中的 GCC 之后,但我收到以下错误:

make -C pkg-config --cflags --libs jansson src
make: 无效选项 -- '/' make: 无效选项 -- 'u' make: 无效选项 -- '/' 用法:make [options] [target] ...

【问题讨论】:

  • 这不是你应该如何使用pkg-config,就像你自己说的,它需要在调用编译器时添加,而不是 make。请添加您的 makefile 以提供minimal reproducible example
  • 对makefile还是个新手,我以为gcc是用make做的,我刚刚发布了Makefile
  • 一般来说,除非您知道如何没有 Make,否则您无法使用Make。看起来正确的编译器命令是“cc -o prog prog.c pkg-config --cflags --libs jansson”,但在尝试围绕它构建 makefile 之前,您必须确认这一点。
  • stackoverflow.com/a/20146082/841108 是一个非常相似的问题的答案

标签: c makefile jansson


【解决方案1】:

在你的 Makefile 里面做这样的事情:

LIBS = $(shell pkg-config --libs jansson)
CFLAGS = $(shell pkg-config --cflags jansson)

然后,在您的目标中(编译/链接代码的地方)使用以下方式:

cc ... $(LIBS) $(CFLAGS)

如果您正在寻找Makefile 示例,请看这里:

http://www.owsiak.org/fortran-and-gnu-make/

它并不完全符合您的要求,但它应该会给您一些关于Makefile 结构、目标、通配符等的想法。它基于Fortran,但我很确定您可以轻松阅读它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    相关资源
    最近更新 更多