我刚刚使用crosstools“mips-unknown-linux-gnu-gcc”构建了交叉编译器,并编译了一个hello世界程序。编制了罚款使用命令:“MIPS-未知Linux的GNU-G ++ HELLO.CPP -o你好”,但是当我运行命令“./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.
你在编译它的同一台机器上运行“./hello”吗? – 2010-07-15 19:48:26
如果你在windows上并且为Linux交叉编译一个程序,你是否期望你的新Linux程序能够在windows下运行?这种情况并没有什么不同......(如果你这样做,那么你需要提出一个更抽象的问题) – Cogwheel 2010-07-15 19:50:54
是的,我在同一台机器上运行它,也许我有点困惑,我的目标是在我的linux机器上编译一个程序,然后我可以反汇编elf文件并将其加载到我构建的mips模拟器中。所以这个elf文件应该是一个MIPS精灵文件。我可以看到那些不能在linux机器上执行的地方,但是我该如何测试编译器是否正常工作以及编译后的二进制文件是否工作正常?请记住,我的mips模拟器现在正在测试中,不能用于此类验证。 – 2010-07-15 19:57:09