1
我有一个Dreambox卫星接收器与Enigma2 OpenEmbedded操作。所以MIPS架构。 我想在我的Ubuntu PC上将一个.sh文件交叉编译成一个Enigma2二进制文件。交叉编译sh脚本以bin为enigma2(mips)OpenEmbedded
我在Ubuntu PC上安装了用于mips32体系结构的codesourcery交叉编译工具链。
工具链信息:
/mips-compiler/mips-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=/mips-compiler/mips-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_MIPS_GNU_Linux/bin/../libexec/gcc/mips-linux-gnu/4.7.3/lto-wrapper
Target: mips-linux-gnu
Configured with: /scratch/cmoore/2013.05-36-mips-linux-lite/src/gcc-4.7-2013.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=mips-linux-gnu --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-arch-32=mips32r2 --with-arch-64=mips64r2 --with-float=hard --with-mips-plt --enable-extra-sgxxlite-multilibs --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} -D__CS_SOURCERYGXX_MAJ__=2013 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=36 %{O2:%{!fno-remove-local-statics: -fremove-local-statics}} %{O*:%{O|O0|O1|O2|Os:;:%{!fno-remove-local-statics: -fremove-local-statics}}}' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery CodeBench Lite 2013.05-36' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/mips-linux-gnu/libc --with-build-sysroot=/scratch/cmoore/2013.05-36-mips-linux-lite/install/mips-linux-gnu/libc --with-gmp=/scratch/cmoore/2013.05-36-mips-linux-lite/obj/pkg-2013.05-36-mips-linux-gnu/mips-2013.05-36-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/cmoore/2013.05-36-mips-linux-lite/obj/pkg-2013.05-36-mips-linux-gnu/mips-2013.05-36-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/cmoore/2013.05-36-mips-linux-lite/obj/pkg-2013.05-36-mips-linux-gnu/mips-2013.05-36-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-ppl=/scratch/cmoore/2013.05-36-mips-linux-lite/obj/pkg-2013.05-36-mips-linux-gnu/mips-2013.05-36-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-cloog=/scratch/cmoore/2013.05-36-mips-linux-lite/obj/pkg-2013.05-36-mips-linux-gnu/mips-2013.05-36-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-libelf=/scratch/cmoore/2013.05-36-mips-linux-lite/obj/pkg-2013.05-36-mips-linux-gnu/mips-2013.05-36-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --disable-libgomp --disable-libitm --enable-poison-system-directories --with-build-time-tools=/scratch/cmoore/2013.05-36-mips-linux-lite/install/mips-linux-gnu/bin --with-build-time-tools=/scratch/cmoore/2013.05-36-mips-linux-lite/install/mips-linux-gnu/bin
Thread model: posix
gcc version 4.7.3 (Sourcery CodeBench Lite 2013.05-36)
我用SHC到sh文件转换为.c文件 然后我交叉编译的C文件到MIPS二进制使用命令:
/mips-compiler/mips-linux-gnu-gcc -mips32 -o test.bin test.sh.x.c
没有错误(我很高兴,但不幸(见下文))。 然后复制bin文件到我的enigma2箱,并试图执行它...
当我运行在MIPS机器我看到这个输出二进制:
./test.bin: line 1: syntax error: unexpected "("
所以很明显,我忘了东西在交叉编译命令,但是什么?
感谢里卡多的回复。非常感谢你的帮助。 当我比较你写的和我所做的时,它似乎是一样的。这样一切都会好的。 您询问了二进制文件命令的输出。你的意思是和你在'cat hello.c'回复中写的一样吗?如果是这样,那将是一个非常大的输出因为我有一个长的shell脚本。而且这个shell脚本本身就没问题,因为当我不交叉编译它时,只是用我的Ubuntu机器上的gcc编译它时,它运行得非常完美。 –
你好ni_hao。我的意思是'file'命令,通常位于Ubuntu系统的'/ usr/bin/file'中,如上面引用输出的倒数第二行所示。您可以看到'file'告诉我,我生成的'hello'文件是MIPS Linux系统的32位可执行文件。 –