Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为PowerPC编写Hello World程序_C_Gcc_Powerpc - Fatal编程技术网

如何为PowerPC编写Hello World程序

如何为PowerPC编写Hello World程序,c,gcc,powerpc,C,Gcc,Powerpc,我有一个Dreambox 500,维基百科上说它有一个PCP处理器,它是PowerPC: $cat/proc/cpuinfo 处理器:0 cpu:STBx25xx 时钟:252MHz 审查:9.80(pvr 5151 0950) 博戈米普斯:250.36 机器:Dream多媒体Dreambox电视 plb总线时钟:63MHz 我通常会安装GCC,但它的存储空间很低,我需要为它编译一个程序 我听说GCC可以编译powerpc,但我没有运气这么做 此代码的示例 #include <stdio

我有一个Dreambox 500,维基百科上说它有一个PCP处理器,它是PowerPC:

$cat/proc/cpuinfo
处理器:0
cpu:STBx25xx
时钟:252MHz
审查:9.80(pvr 5151 0950)
博戈米普斯:250.36
机器:Dream多媒体Dreambox电视
plb总线时钟:63MHz
我通常会安装GCC,但它的存储空间很低,我需要为它编译一个程序

我听说GCC可以编译powerpc,但我没有运气这么做

此代码的示例

#include <stdio.h>

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

    return 0;
}
但它给出了这个错误

example.c:1:0 error: bad value (powerpc) for -mtune- switch
#include <stdio.h>
^
example.c:1:0错误:-mtune-switch的错误值(powerpc)
#包括
^

谢谢大家!

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

许多GNU/Linux distor将交叉编译器作为单独的包提供。例如,对于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的交叉编译器工具链,但它包含相对较旧的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做了什么,但是它增加了可执行文件的大小,最后它工作了

编译器现在不会给我错误,我会在我的dm500上测试它。当我运行它时,它会显示“分段错误”。:(运行
ldd a.out
(或编译程序的任何名称)并在此处发布其输出。它显示“不是动态可执行文件”。您在哪里运行此文件?AFAIK静态标志将二进制文件编译为不具有运行时库依赖项的单片可执行文件。
powerpc-gcc someprog.c -static