在MAC上交叉编译C时出现libcurl问题

时间:2014-08-30 18:39:55

标签: gcc cross-compiling openwrt toolchain

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

1.安装MAC上的libcurl

brew install curl 

2.使用工具栏链交叉编译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

1 个答案:

答案 0 :(得分:4)

您需要使用mips工具链交叉编译curl / libcurl。 (实际上你应该为所有其他依赖项执行此操作)

您已经使用brew安装了curl,它基本上将x64版本的curl放在您的系统上。

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

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

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