编译问题

在调试HTTPS过程中,遇到了两个编译错误:1. 'relocation truncated to fit' 错误,原因是XXX源文件所在路径下的文件未被编译,通过在上一级makefile添加依赖解决。2. 'expected '=', '.', ':'... before 'typedef' 错误,是由于某C文件里的一个字母拼写错误导致,编译器定位错误不准确,需仔细排查。" 105201854,9406519,机器学习中的降维技术:主成分分析与局部线性嵌入,"['机器学习', '降维方法', '主成分分析PCA', '局部线性嵌入LLE']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在调试HTTPS的过程中遇到一些编译错误,这里整理记录一下。

1.  relocation truncated to fit : R_MIPS_16 against / unreference declaration of XXX 

初步判断是有类型未声明或者定义。按照提示寻找XXX 找到以后发现, XXX的定义和声明都是存在的。

然后就否定了这个想法,开始怀疑编译器的问题,在网上查发现和我的情况都不一样,又重新看了一遍,

虽然XXX的声明的文件被编译了,但是定义的文件并未被编译。先排查被宏定义包住的情况,排除,定位发现

是XXX的源文件所在的路径下的文件都没有被编译, 但是上一级的makefile已经定义了

LOCAL_MODULE_DEPENDS := \

                                                      ../../../XXX \

然后就查看别的文件,发现都是这样写的都可以编译,为啥它不行呢?抱着试试看的心态在更上一级的makefile中添加了编译依赖项,然后PASS了,理论上暂时还是不是很清楚为什么要在更上一级添加倚赖,有待学习。

2. expected '=', '.' ':' , 'asm' or '_attribute_' before 'typedef'

开始怀疑是类定义的问题,搜索提示出错的类,按照stack一层一层找,未发现语法错误,grep 这个类发现很多地方都引用了,都没有报错,但是在这里报错了,又按照提示看,发现某个C文件里多了一个字母,然后编译的时候没报这个字母的错,报的是上述错误。

编译器本身的定位能力还是有限的,要从提示处仔细往上排查才能找到错误,有时候比较匪夷所思的错误往往最后发现都是一个低级错误引起的,编译器并未定位到这里,而且自己又找偏了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值