交叉编译器二进制执行错误

时间:2010-07-15 19:46:23

标签: c++ compiler-construction linker cross-compiling

我刚刚使用crosstools构建了一个交叉编译器“mips-unknown-linux-gnu-gcc”,我编译了一个hello world程序。使用命令编译很好:“mips-unknown-linux-gnu-g ++ hello.cpp -o hello”但是当我运行命令“./hello”时,我收到以下错误:

babbage-dasnyder 50% mips-unknown-linux-gnu-g++ hello.cpp -o hello
babbage-dasnyder 51% ./hello
./hello: Exec format error. Wrong Architecture.

这是为什么?我做错了交叉编译器吗?我在linux机器上运行它。

就像一张纸条一样,crosstools确实说它可以运行一个简单的程序:

+ /home/seas/grad/dasnyder/opt/crosstool/gcc-3.4.5-glibc-2.3.6/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-gcc -static hello.c -o mips-unknown-linux-gnu-hello-static
+ /home/seas/grad/dasnyder/opt/crosstool/gcc-3.4.5-glibc-2.3.6/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-gcc hello.c -o mips-unknown-linux-gnu-hello
+ test -x /home/seas/grad/dasnyder/opt/crosstool/gcc-3.4.5-glibc-2.3.6/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-g++
+ cat
+ /home/seas/grad/dasnyder/opt/crosstool/gcc-3.4.5-glibc-2.3.6/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-g++ -static hello2.cc -o mips-unknown-linux-gnu-hello2-static
+ /home/seas/grad/dasnyder/opt/crosstool/gcc-3.4.5-glibc-2.3.6/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-g++ hello2.cc -o mips-unknown-linux-gnu-hello2
+ echo testhello: C compiler can in fact build a trivial program.
testhello: C compiler can in fact build a trivial program.
+ test '' = 1
+ test '' = 1
+ test '' = 1
+ test 1 = ''
+ echo Done.
Done.

1 个答案:

答案 0 :(得分:3)

  

就像一张纸条,crosstools确实说它可以运行一个简单的程序:

     

testhello:C编译器实际上可以构建一个简单的程序。

当您交叉编译到不同的体系结构时,您将为新体系结构生成指令,因此您可能无法在当前体系结构上运行这些指令。您正在交叉编译,以便能够在功能更强大的计算机上编译代码,然后将其传输到设备进行测试。如果您想直接在计算机上测试代码,则需要使用本机架构的编译器进行编译。