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

 

 

总结:

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

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

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

 

转载于:https://www.cnblogs.com/geekwade/p/11401793.html

你可能感兴趣的:(c/c++)