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

本文介绍了在Linux系统中遇到将程序移植到Android设备时遇到的问题,由于架构不同,需要进行交叉编译。文章提供了三种解决方案:使用arm-none-linux-gnueabi-gcc、arm-linux-androideabi-gcc和arm-linux-gnueabihf-gcc交叉编译工具进行静态编译,并详细阐述了每个方案的下载、安装、配置和编译过程。然而,方案二在编译时遇到了问题。
摘要由CSDN通过智能技术生成

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  57222
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值