[Linux]arm-linux-gcc交叉编译环境

  • Post author:
  • Post category:linux


1.问题:

Linux下(gcc)编译的可执行程序,放到Android设备中运行,报not executable: 64-bit ELF file:

$ gcc -static hello.cpp -o hello-exe

$ adb shell /system/bin/hello-exe
/system/bin/sh: /system/bin/hello-exe: not executable: 64-bit ELF file

2.原因:

PC上的CPU是基于X86的结构,Android设备主要基于ARM的,就导致了Linux下的程序必须重新编译才能在Android下运行。这里重新编译就需要使用【交叉编译】

见[[工具 -> Linux/Android]如何查看设备的CPU架构]

3.方案:

3.1 方案一:用交叉编译工具arm-none-linux-gnueabi-gcc编译,且静态编译-static

(1)下载


http://www.codesourcery.com/sgpp/lite/arm/portal/package7851/public/arm-none-linux-gnueabi/arm-2010.09-50-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

(2)安装,即复制到Linux的系统上,然后解压缩

$ tar -xjvf  arm-2010.09-50-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

$ ls -la
arm-2010.09

$ cd arm-2010.09/bin

$ ls -la
-rwxr-xr-x 1 tssh tssh  569820 11月  8  2010 arm-none-linux-gnueabi-addr2line
...
-rwxr-xr-x 2 tssh tssh  225860 11月  8  2010 arm-none-linux-gnueabi-c++
...
-rwxr-xr-x 1 tssh tssh  224196 11月  8  2010 arm-none-linux-gnueabi-cpp
...
-rwxr-xr-x 2 tssh tssh  225860 11月  8  2010 arm-none-linux-gnueabi-g++
-rwxr-xr-x 2 tssh tssh  222948 11月  8  2010 arm-none-linux-gnueabi-gcc
-rwxr-xr-x 2 tssh tssh  222948 11月  8  2010 arm-none-linux-gnueabi-gcc-4.5.1
...
-rwxr-xr-x 1 tssh tssh 3186492 11月  8  2010 arm-none-linux-gnueabi-gdb
...
-rwxr-xr-x 1 tssh tssh  572220 11月 



版权声明:本文为csy_best原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。