c++ 编译 curl 报错 数组‘__curl_rule_01__’的…

2019-08-26 05:38:10来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

c++ 编译 curl 报错 数组‘__curl_rule_01__’的大小为负 解决方法

背景:在原有的项目GCC编译环境下(arm-linux 32位),增加x86-linux 64位的编译环境,编译curl库的时候发生错误。

其他:编译服务器为64位Centos

编译错误提示

/include/curl/curlrules.h:142:3: 错误:数组‘__curl_rule_01__’的大小为负
__curl_rule_01__

解决过程:

1.在网上搜索得知是用64位的编译环境编32位的镜像时导致的:在 curlrules.h 。这个错误是故意强制作为检查数据类型大小的一部分。

2.尝试按网上修改:CURL_SIZEOF_LONG 和 CURL_SIZEOF_CURL_OFF_T,但未解决问题。

3.灵机一动,因为提示是curlrules.h头文件出错,那么能不能直接换64位的头文件呢

用命令搜索 find /usr/include -name curlrules.h, 得知Centos自身就有curl库,

所以直接把项目的头文件路径定到/usr/include,但是这影响到其他库的头文件路径;

4.再改良下,把整个curl文件夹拷贝到原include路径下面,为了避免与原先旧的curl冲突,把新的curl重命名为curl64

5.然后修改原码 把所有的 #include <curl/ 全局替换成 #include <curl64/ ,再编译,OK

 

 

总结:

1.如果不考虑旧的项目环境,直接替换curl的头文件

2.如果想其他项目的环境并存,则把64位的curl头文件拷贝到原include路径下并命名为curl64,再修改修改源码中的 #include <curl/ 全局替换成 #include <curl64/

第一篇博文,写得不好,多多指教

 


原文链接:https://www.cnblogs.com/geekwade/p/11401793.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:P5200 [USACO19JAN]Sleepy Cow Sorting

下一篇:CF1204D Kirk and a Binary String