我正在尝试编译一个程序,以便在具有ARM926EJ-S处理器的Linux电源板上运行。所以我安装了Debian嵌入式交叉开发工具链,并尝试使用-march = armv5te在gcc中编译Hello World。当我尝试在板上运行二进制文件时,它崩溃了文件未找到错误(由于库版本),之后我尝试使用-static标志进行编译,我得到了一个seg错误(__ libc_start_main()中的0x0000827c,表示mr gdb通过gdbserver)。
有什么想做什么来运行?
答案 0 :(得分:0)
显然,解决方案是尝试尽可能多的工具链。最终你会花费几个小时来编译工具链,找到有效的。在这种情况下,uClibc buildroot。
答案 1 :(得分:0)
您可以在Linaro Page上找到支持ARM926EJ-S的工具链。使用最新的arm-linux-gnueabi from Linaro project。我目前正在使用gcc 4.9.4版本,您可以找到here
建议使用-mcpu = arm926ej-s而不是-march和-mtune。请参阅gcc documentation,因为它结合了指定处理器的-march和-mtune。它已被弃用于x86,但不适用于arm。
其他可能性是通过crosstools-ng建立自己的工具链。但是,如果您不需要某些特定设置(例如仅使用静态库),Linaro工具链可以开箱即用。