【问题标题】:compile a c++ , at project with libcurl library on macOS在 macOS 上使用 libcurl 库在项目中编译 c++
【发布时间】:2020-03-14 00:47:41
【问题描述】:

我在一个开源 c++ 项目上工作以测试一些更改,并尝试向其中添加 curl。该项目有它自己的autogen.sh 脚本并将创建一个configure,我对autogenconfigure 脚本不太熟悉,但我可以找到一些添加-libcurl 的地方。 它很容易为基于 Linux 的操作系统编译,但是当我想在 Windows 上构建它时,必须从源代码构建 curl 并将其引用到代码中,我也能够为 Windows 构建它。 但是最后我尝试在mac上构建它,我找不到如何将libcurl链接到mac,我尝试从源代码构建没有成功。

Undefined symbols for architecture x86_64:

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

在 Makefile 脚本中我有这些:

CFLAGS = -DCURL_STATICLIB

CURL_CFLAGS = -I/usr/local/Cellar/libcurl/include/

CURL_LIBS = -L/usr/local/Cellar/libcurl/lib -lcurl

OBJCXXFLAGS = -DCURL_STATICLIB

我该如何解决这个问题?

【问题讨论】:

    标签: c++ macos qt libcurl


    【解决方案1】:

    那些路径 ('/usr/local/Cellar/') 属于 Homebrew。 Install it 在你的 Mac 上,如果你还没有的话。这是将许多开源库引入您的 Mac 的最简单方法。它可以从命令行轻松管理,但也有 GUI 实用程序,如 Cakebrew

    安装 Homebrew 后,您只需在终端执行此操作即可安装 libcurl:

    brew install curl
    

    它将静态库和动态库安装在/usr/local/opt/curl/lib/

    安装包时,输出如下文本:

    curl 仅限于小桶,这意味着它没有符号链接到 /usr/local, 因为 macOS 已经提供了这个软件并安装了另一个 并行的cersion会引起各种麻烦。

    要让编译器找到 curl,您可能需要设置:

    export LDFLAGS="-L/usr/local/opt/curl/lib"
    export CPPFLAGS='-I/usr/local/opt/curl/include"
    

    要让 pkg-config 找到 curl,您可能需要设置:

    export PKG_CONFIG_PATH="/usr/local/opt/curl/lib/pkgconfig"
    

    还有另一个名为“curl-openssl”的 brew 包支持 openssl。

    【讨论】:

    • 感谢您的回复。我这样做了,但我再次收到相同的错误消息。
    • 您是否更改了 Makefile 以匹配 brew 安装库的真实路径?
    猜你喜欢
    • 2017-03-12
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多