关于GSMMAP分支cell_log扫描不正常问题的解决办法
阔别多年,本周在KALI 2.0下重拾旧时趣味,可怎么折腾都未曾见ARFCN,迫不得已还刷了brust_ind分支 才达到目的。后经仔细翻阅官方文档发现此问题早有披露,解决方案也已经公布,逐分享给大家一阅。
note: as of 2013-10-20, if you use a toolchain with gcc >=4.8, the firmware can be compiled, but will hang as soon as you want to sync to an ARFCN. This issue has been fixed in master.
上文如是说如果你的交叉编译器中的gcc版本大于等于4.8,那么固件可以被正常编译,但cell_log扫描ARFCN的功能基本是废的,这个问题已经在master主分支中被修复。那么意味着gsmmap这个4年没动过的分支当然是不行了。
我分析这个问题国内普遍反映是使用了 gnu-arm-build.3.sh 这个编译脚本的时候,而在 gnu-arm-build.2.sh 时内置的还是4.5版本的GCC,所以未曾出现这个问题。
解决方法:
修改以下五个文件 src/target/firmware/board/compal/highram.lds src/target/firmware/board/compal/ram.lds src/target/firmware/board/compal_e88/flash.lds src/target/firmware/board/compal_e88/loader.lds src/target/firmware/board/mediatek/ram.lds
找到每个文件中的 KEEP(*(SORT(.ctors))) 一行,在其下面加入新的一行 KEEP(*(SORT(.init_array)))
例如:
LONG(SIZEOF(.ctors) / 4 - 2) /* ctor pointers */ KEEP(*(SORT(.ctors))) KEEP(*(SORT(.init_array))) /* end of list */ LONG(0)
执行编译
cd /opt/osmocom-BB/src
make -e CROSS_TOOL_PREFIX=arm-none-eabi-