当前位置: 移动技术网 > IT编程>开发语言>C/C++ > c++ 编译 curl 报错 数组‘__curl_rule_01__’的大小为负 解决方法

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

2019年08月23日  | 移动技术网IT编程  | 我要评论

风声鹤唳txt下载,mird 124,逆世界 片尾曲

背景:在原有的项目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/

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

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网