如何为PowerPC编译Hello World程序

Iam*_*nok 4 c gcc powerpc

我有一个Dreambox 500,在Wikipedia上说它有一个PowerPC PCP处理器:

$ 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
Run Code Online (Sandbox Code Playgroud)

我通常会安装GCC,但是它的存储空间不足,因此我需要为其编译程序。

我听说GCC可以编译powerpc,但是我没有运气。

此代码示例

#include <stdio.h>

int main()
{
    printf("Hello World!\n");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我用它来编译

gcc example.c -mtune=powerpc
Run Code Online (Sandbox Code Playgroud)

但是它给这个错误

example.c:1:0 error: bad value (powerpc) for -mtune- switch
#include <stdio.h>
^
Run Code Online (Sandbox Code Playgroud)

谢谢!

nig*_*ser 5

您应该使用交叉编译器,因为您的目标体系结构与主机体系结构不同。主机是系统的体系结构(通常是amd64(x86_64)或i386(x86_32))。目标弓是将在其中运行已编译程序的弓(powerpc针对您的情况)。

许多GNU / Linux发行商都将交叉编译器作为单独的软件包提供。例如,对于Ubuntu,这些软件包可用:

sudo apt-get install gcc-4.8-powerpc-linux-gnu g++-4.8-powerpc-linux-gnu binutils-4.8-powerpc-linux-gnu
Run Code Online (Sandbox Code Playgroud)

上面的软件包值得信赖。在更高的版本中,提供了不同的GCC版本。

然后,您可以使用编译程序powerpc-linux-gnu-gcc-4.8。或者,你可以设置你的环境变量CC,并CXXpowerpc-linux-gnu-gcc-4.8powerpc-linux-gnu-g++-4.8相应。

upd: 我在这里找到了Dreambox 500的交叉编译器工具链,但其中包含相对较旧的GCC(3.4)。

为了使用它将下载的文件提取到/opt/cross/dm500/opt/cross/dm500/cdk/bin通过添加到路径export PATH=$PATH:/opt/cross/dm500/cdk/bingcc从此处使用适当的前缀。


Iam*_*nok 1

在编程论坛上呆了一段时间后,发现一个人有同样的问题,过了一段时间他找到了解决这个问题的方法,我尝试了一下,它有效。我要做的就是

powerpc-gcc someprog.c -static
Run Code Online (Sandbox Code Playgroud)

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

  • 据我所知,静态标志将您的二进制文件编译为不具有运行时库依赖项的整体可执行文件。 (5认同)