c - 用于为索尼阅读器 prs900 编译/交叉编译 gcc 的 binutils

标签 c linux gcc arm cross-compiling

我有一个 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/

相关文章:

regex - 如何在sed中匹配没有某些字符串的行

c - 如何覆盖C中的文件?

javascript - 如何添加允许在 Umbraco 中添加新行的验证

linux - Bash 脚本将工作目录更改为它所在的目录

c++ - 错误读取变量 : Could not find the frame base

gcc - -Wextra 真的有用吗?

c++ - gcc 选项 std=gnu++17 与 std=c++17

c - 我对 c 中的 strcpy() 有一个困惑

c - 如何在 Linux 中获取本地(区域)日期格式?

Linux 如何通过错误号获取错误描述