全志R11交叉编译器灵活使用

1. 目录结构 
Tina 交叉编译器是预先编译好的,目录为: 
tina/prebuilt/gcc 
具体目录结构如下:

.├── aarch64 (详见①) 
│ ├── aarch64-toolchain.txt 
│ ├── toolchain-sunxi-glibc 
│ │ ├── LICENSE 
│ │ ├── README.TOOLCHAIN 
│ │ ├── toolchain 
│ │ │ ├── aarch64-openwrt-linux -> aarch64-openwrt-linux-gnu 
│ │ │ ├── aarch64-openwrt-linux-gnu 
│ │ │ ├── bin 
│ │ │ ├── etc 
│ │ │ ├── include 
│ │ │ ├── info.mk 
│ │ │ ├── lib 
│ │ │ ├── lib32 -> lib 
│ │ │ ├── lib64 -> lib 
│ │ │ ├── libexec 
│ │ │ ├── sbin 
│ │ │ ├── share 
│ │ │ └── var 
│ │ └── version.mk 
│ └── toolchain-sunxi-musl 
│ ├── LICENSE 
│ ├── README.TOOLCHAIN 
│ ├── toolchain 
│ │ ├── aarch64-openwrt-linux -> aarch64-openwrt-linux-musl 
│ │ ├── aarch64-openwrt-linux-musl 
│ │ ├── bin 
│ │ ├── include 
│ │ ├── info.mk 
│ │ ├── lib 
│ │ ├── lib32 -> lib 
│ │ ├── lib64 -> lib 
│ │ ├── libexec 
│ │ └── share 
│ └── version.mk 
├── arm (详见②) 
│ ├── arm-toolchain.txt 
│ ├── toolchain-sunxi-arm9-glibc 
│ │ ├── LICENSE 
│ │ ├── README.TOOLCHAIN 
│ │ ├── toolchain 
│ │ │ ├── arm-openwrt-linux -> arm-openwrt-linux-gnueabi 
│ │ │ ├── arm-openwrt-linux-gnueabi 
│ │ │ ├── bin 
│ │ │ ├── etc 
│ │ │ ├── include 
│ │ │ ├── info.mk

│ │ │ ├── lib 
│ │ │ ├── lib32 -> lib 
│ │ │ ├── lib64 -> lib 
│ │ │ ├── libexec 
│ │ │ ├── sbin 
│ │ │ ├── share 
│ │ │ └── var 
│ │ └── version.mk 
│ └── toolchain-sunxi-arm9-musl 
│ ├── LICENSE 
│ ├── README.TOOLCHAIN 
│ ├── toolchain 
│ │ ├── arm-openwrt-linux -> arm-openwrt-linux-muslgnueabi 
│ │ ├── arm-openwrt-linux-muslgnueabi 
│ │ ├── bin (详见③) 
│ │ ├── include (详见④) 
│ │ ├── info.mk 
│ │ ├── lib (详见⑤) 
│ │ ├── lib32 -> lib 
│ │ ├── lib64 -> lib 
│ │ ├── libexec 
│ │ └── share 
│ └── version.mk 
└── host (详见⑥) 
└── host-toolchain.txt

详注: 
① gcc/linux-x86/aarch64 是小机为 64 位的编译器目录; 
② gcc/linux-x86/arm 是小机为 32 位的编译器目录(R11是 32 位机器); 
③ bin 目录:存放交叉编译工具,包括 gcc, g++, ar, nm, objdump 等。 
gcc: C 交叉编译器; 
g++: C++交叉编译器; 
ar: 创建静态链接库; 
ld: 连接器,将目标文件链接为可执行程序; 
objdump: 查看目标文件或者执行文件的构成; 
nm: 列出目标文件的符号; 
④ include 目录:存放编译应用程序时程序包含的头文件,如 stdio.h 等 
⑤ lib 目录:存放编译器相关的库,如 libc 库 
⑥ host 目录:存放 host 端编译器相关目录(暂时未使用,目前 host 端使用的是本地 gcc 工具等)

2. 使用例子

如果想要在 Tina 源码上添加自己的应用,可以参考《Tina Linux 系统介绍》中的“创建和移植软件包”,这种方法不需要对编译器的路径、编译选项等进行设置,同时也方便开发者对软件包进行管理,建议使用该方法。

如果需要在 Tina 源码之外单独编译应用,则需要设置 Tina交叉编译工具链路径,下面是编译一个helloworld 的例子:

目录结构:

http://bbs.16rd.com/thread-476967-1-1.html

├── helloworld

├── main.c

└── Makefile

main.c:

#include <stdio.h>

int main(void)

{

printf("Hello World!\n");

return 0;

}

Makefile:

CROSS_COMPILE_PATH=/tina/prebuilt/gcc/linux-x86/arm/toolchain-sunxi/toolchain/bin

CROSS_COMPILE=$(CROSS_COMPILE_PATH)/arm-openwrt-linuxCC=$(CROSS_COMPILE)gcc

all:

$(CC) -o helloworld main.c

CROSS_COMPILE_PATH 需要写自己的编译器路径。

在当前目录下执行 make 即可进行编译,编译成功会生成可执行程序 helloworld,将它拷贝到小机端后即可运行。

原文地址:https://www.cnblogs.com/hanrp/p/12119200.html

时间: 2024-10-04 04:40:34

全志R11交叉编译器灵活使用的相关文章

[转载]arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别

arm交叉编译器gnueabi.none-eabi.arm-eabi.gnueabihf.gnueabi区别 (http://www.veryarm.com/296.html) 命名规则 交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch - 体系架构,如ARM,MIPS vendor - 工具链提供商 os - 目标操作系统 eabi - 嵌入式应用二进制接口(Embedded Application Binary Interface) 根

安装ARM交叉编译器

1.开发平台 虚拟机:VMware 12 操作系统:Ubuntu 14.04 64bit 2.准备ARM交叉编译工具包 编译uboot和linux kernel都需要ARM交叉工具链支持,这里使用Linaro提供的交叉编译工具.下载地址为:http://releases.linaro.org/ 注意:如果主机是64bit,请选择64位的交叉编译器工具链,32bit的主机选择32位的交叉工具链. The Linaro Toolchain Working Group is pleased to an

arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf的区别

命名规则 交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] [-gcc] arch – 体系架构,如ARM,MIPS vendor – 工具链提供商 os – 目标操作系统 eabi – 嵌入式应用二进制接口(Embedded Application Binary Interface) 注意 没有vendor时,用none代替: 没有os支持时,也用none代替 同进没有vendor和os支持时,只用一个none代替,比如arm-none-eabi中

linux下交叉编译器制作

目前我用的交叉编译器是TQ2440配套光盘中制作好了的,解压后需要如下配置: 1.对于Fedora系统:修改/etc/profile文件,在其中添加交叉编译器的环境变量的设置. 对于Ubuntu系统,修改/etc/enviroment文件 2.我用的是Fedora系统,修改PATH值,在其后添加上交叉编译器的路径,添加pathmunge /opt/EmbedSky/4.3.3/bin 对于Ubuntu系统,修改PATH="/usr/local/sbin:/usr/local/bin:/usr/s

添加了环境变量,然而交叉编译器还是无法运行的解决方案

首先贴出出错提示信息: [email protected]:/usr/local/arm/2.95.3/bin$ arm-linux-arm-linux-addr2line   arm-linux-gasp        arm-linux-protoizearm-linux-ar          arm-linux-gcc         arm-linux-ranlibarm-linux-as          arm-linux-gcj         arm-linux-readelf

交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别

  自己之前一直没搞清楚这两个交叉编译器到底有什么问题,特意google一番,总结如下,希望能帮到道上和我有同样困惑的兄弟-.. 一. 什么是ABI和EABI 1) ABI: 二进制应用程序接口(Application Binary Interface (ABI) for the ARM Architecture) 在计算机中,应用二进制接口描述了应用程序(或者其他类型)和操作系统之间或其他应用程序的低级接口. ABI涵盖了各种细节,如: 数据类型的大小.布局和对齐; 调用约定(控制着函数的参数

什么是交叉编译器?

由于项目的需要,我们需要一个能在x86平台上运行,生成mips应用程序的交叉编译器,最近几天一直在搞这个,看了很多的文章也试 了不少的方法,最后终于成功了,还不错,有些新的和大家交流一下. 什么是交叉编译器? 为什么叫“交叉编译器”(cross compiler),就是因为它跨平台来编译程序!做交叉编译器要弄清楚3个概念:host, build, target: build -- 你在什么平台上编译的这个编译器 host -- 这个编译器将来要在什么平台上运行 target -- 编译器最终会生

linux下ARM交叉编译器的安装

1.下载arm-linux-gcc编译器. 2.将下载好的编译器压缩文件拷贝到linux中,注意不要在windows中解压,因为RAR解压工具解压gzip压缩工具压缩的文件可能会出问题. 尽量将编译器的压缩文件放置到根目录下(其实也不一定是要根目录,但是我自己使用过程中发现有一个厂家提供的编译器没有安装在指定的位置,编译器提示库找不到),这样做的目的是为了尽量减少麻烦.拷贝好之后,在终端使用: # tar xvzf arm-linux-gcc-4.4.3.tar.gz 解压编译器. 3.解压好了

gcc-linaro-arm-linux-gnueabihf交叉编译器配置

系统Ubuntu14.04 版本:gcc 版本 4.7.3 20130328 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.04-20130415 - Linaro GCC 2013.04) 具体配置与其他编译器类似:arm-fsl-linux-gnueabi交叉编译器安装 不具体赘述了. 配好后,报错libstdc++.so.6: cannot open shared object file: No such file or directo