BREW中关于__rt_sdiv和__rt_udiv的错误

昨天,同事碰到的问题,我第一眼看了说用了除法,他问,难道不能用除法么。除法当然可以用。据他介绍,原来可以编译通过的,没有修改任何配置的脚本。我记得很早之前碰到过这个问题,但忘了要修改什么地方了,看来已经老了。
于是,就按照最原始的办法,看代码什么地方调用了可能引发这两个问题的函数,用IDA进行反编译,找到__rt_sdiv,然后看什么地方调用了该函数,一下子就看到了:

       int fun(int a, int b)
       {
       if (b == 0)
       return ((1<<16)>>1);
       return a/b;
       }
       

当然,上面的写法什么的完全没有问题,那为什么编译不过呢。于是,我看了下他的脚本,link的命令中没有使用-libpath $(ARMLIB),我记得这个是有用的,对比下我的makefile,有这一项,就加上试试,果然是这个问题。
好记性不如烂笔头啊。

发布者

rix

如果连自己都不爱自己,哪还有谁来爱你