我有一个Dreambox 500,在维基百科上说有一个PCP处理器是PowerPC:
$ cat /proc/cpuinfo
processor: 0
cpu: STBx25xx
clock: 252MHz
Review: 9.80 (pvr 5151 0950)
bogomips: 250.36
Machine: Dream Multimedia Dreambox TV
plb bus clock: 63MHz
我通常会安装GCC,但它的存储空间很小,我需要为它编译一个程序。
我听说GCC可以编译powerpc,但我没有运气。
此代码示例
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
我用它来编译
gcc example.c -mtune=powerpc
但它给出了这个错误
example.c:1:0 error: bad value (powerpc) for -mtune- switch
#include <stdio.h>
^
谢谢!
答案 0 :(得分:4)
您应该使用交叉编译器,因为目标架构与主机架构不同。主机是系统的体系结构(通常为amd64
(x86_64)或i386
(x86_32))。目标arch是运行已编译程序的拱门(在您的情况下为powerpc
)。
许多GNU / Linux distors提供交叉编译器作为单独的包。例如,对于Ubuntu,可以使用这些包:
sudo apt-get install gcc-4.8-powerpc-linux-gnu g++-4.8-powerpc-linux-gnu binutils-4.8-powerpc-linux-gnu
上面的套餐是值得信赖的。在以后的版本中,可以使用不同的GCC版本。
然后您可以使用powerpc-linux-gnu-gcc-4.8
编译您的程序。或者,您可以相应地将环境变量CC
和CXX
设置为powerpc-linux-gnu-gcc-4.8
和powerpc-linux-gnu-g++-4.8
。
<强> UPD:强> 我找到了Dreambox 500 here的交叉编译器工具链,但它包含相对较旧的GCC(3.4)。
为了使用它将下载的文件解压缩到/opt/cross/dm500
,请通过/opt/cross/dm500/cdk/bin
将export PATH=$PATH:/opt/cross/dm500/cdk/bin
添加到路径,并使用gcc
从此处添加适当的前缀。
答案 1 :(得分:0)
在一个编程论坛上待了一段时间后,找到了一个有同样问题的人,过了一会儿他找到了解决问题的方法,我试了一下它就行了。 我要做的就是
powerpc-gcc someprog.c -static
我不知道-static做了什么,但它增加了可执行文件的大小,最后它可以工作!