我有一个 root 的索尼阅读器 PRS900,运行 OEM linux 内核 2.6.23,我可以从上面的 SD 存储卡驱动器运行任意 bash/sh 脚本。 我想编译和执行 C 程序...但遇到动态链接器问题。
我首先尝试在 SD 卡上为 arm(slackware 14's)加载 gcc,但即使使用 LD_LIBRARY_PATH,索尼也无法“找到”最新的 elf .so 库,尽管使用旧库的新程序实际上可以找到正常运行。 (我可以很好地运行 slackware-14 的“readelf”。但不能运行 ar 或 gcc...)如果我尝试升级/lib/ld-linux.so.3,我会收到“内核太旧”的错误消息。
然后我尝试了旧的 slackware 10 版本的 gcc,虽然这解决了 elf 库“查找”问题——然后我在运行程序时遇到“非法指令”错误。
所以——我需要在我的 x86 上为合适的 ARM 处理器制作一个 gcc 交叉编译器,然后用它为 sony 重新编译 gcc。 但我不知道我必须使用哪个旧版本的 binutils,因为它组装并链接到 ELF 格式,该格式在索尼上工作或中断。
Sony 正在运行兼容 arm6 的 MX31 EBX5016 处理器。 sony 上一些相关的 OEM 文件名是:
/lib/ld-2.5.so
/lib/ld-linux.so.3 -> ld-2.5.s
/lib/libc-2.5.so
/lib/libgcc_s.so.1
我从内核中知道,使用了 gcc-4.2.0。 我更愿意使用最新版本的 gcc,它可以与我需要安装的任何旧版 binutils 包一起使用。
如何确定我需要哪个版本的 binutils,以及我有哪些 gcc 选项? 谢谢!
最佳答案
您可以在他们的源代码分发服务站点找到索尼使用的工具链:
http://www.sony.net/Products/Linux/Audio/PRS-900.html
看来 sourceryg++-4.2-28armeabi.src.rpm
是编译器。
我不建议在设备本身上运行编译器;会很慢。
关于“非法指令”问题,可能是您的编译器生成了太多新指令,传递 -march=armv6
可能会解决它。
关于c - 用于为索尼阅读器 prs900 编译/交叉编译 gcc 的 binutils,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22419637/