如何为 PowerPC 编译 Hello World 程序

How to compile Hello World program for PowerPC

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

谢谢!

您应该使用交叉编译器,因为您的 target 架构不同于 host 架构。 Host 是您系统的架构(通常是 amd64 (x86_64) 或 i386 (x86_32))。 target arch 是你的编译程序将 运行 (在你的情况下是 powerpc)的 arch。

许多 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编译你的程序。或者您可以相应地将环境变量 CCCXX 设置为 powerpc-linux-gnu-gcc-4.8powerpc-linux-gnu-g++-4.8

更新: 我找到了 Dreambox 500 的交叉编译器工具链 here,但它包含相对较旧的 GCC (3.4)。

为了使用它将下载的文件提取到 /opt/cross/dm500,通过 export PATH=$PATH:/opt/cross/dm500/cdk/bin 添加 /opt/cross/dm500/cdk/bin 到路径,并从这里使用带有适当前缀的 gcc

在编程论坛上呆了一段时间后,找到了一个有同样问题的人,过了一会儿他找到了修复它的方法,我试了一下,它成功了。 我要做的事情是

powerpc-gcc someprog.c -static

我不知道 -static 的作用是什么,但它会增加可执行文件的大小,最后它起作用了!