【问题标题】:libcurl issue when cross compiling C on MAC在 MAC 上交叉编译 C 时出现 libcurl 问题
【发布时间】:2014-10-24 11:45:57
【问题描述】:

我在 MAC OS 上使用 OpenWRT 的工具链交叉编译 C。 C 程序依赖于我已经安装的 libcurl。但是,当我构建 C 程序时,我收到如下错误消息。

1.在MAC上安装libcurl

brew install curl 

2.使用toolbarchain交叉编译main.c

toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-uclibc-gcc -I/usr/local/opt/curl/include main.c

3.编译错误

In file included from /usr/local/opt/curl/include/curl/curl.h:35:0,
             from main.c:4:
/usr/local/opt/curl/include/curl/curlrules.h:142:3: error: size of array '__curl_rule_01__' is negative
__curl_rule_01__
^
/usr/local/opt/curl/include/curl/curlrules.h:152:3: error: size of array '__curl_rule_02__' is negative

curl_rule_02

【问题讨论】:

    标签: gcc cross-compiling openwrt toolchain


    【解决方案1】:

    您需要使用 mips 工具链交叉编译 curl/libcurl。 (实际上你应该对所有其他依赖项都这样做)

    您已经使用 brew 安装了 curl,这实际上是在您的系统上放置了 x64 版本的 curl。

    curl 中有某些头文件是在编译时生成的(我认为 curlbuild.h ) 这些头文件根据架构定义宏,例如CURL_SIZEOF_LONG

    由于您使用 curl 标头(为 x64 arch 准备)来构建 mips 应用程序,因此无法找到正确的 CURL_SIZEOF_LONG 宏,将 -1 作为值。

    此外,有时您需要链接到 libcurl 库。如果您使用 mips 工具链,您当前的库将永远不会链接。因此,请先尝试交叉编译 curl 并使用该版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 2018-01-23
      • 2021-07-26
      • 1970-01-01
      • 2014-08-23
      相关资源
      最近更新 更多