使用toolchain编译OpenWrt程序

来自WRTnode Wiki
跳转至: 导航搜索
其他语言:
English • ‎中文(中国大陆)‎

openwrt 编译工具链简介

交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,mipsel-openwrt-linux表示是对mipsel-openwrt的交叉编译工具链;mipsel-openwrt-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。
那么gcc和mipsel-openwrt-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而openwrt-linux-gcc在linux下跨平台的C语言编译器,编译出来的程序在目标机(如openwrt平台)上执行,嵌入式开发应使用嵌入式交叉编译工具链。
从openwrt官网下载现成的编译工具链 点此下载

下载解压toolchina

下载

Linux系统使用wget下载:

wget https://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620n/OpenWrt-Toolchain-ramips-for-mipsel_24kec%2bdsp-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2

解压

解压到自己的工作目录:

tar -xjf OpenWrt-Toolchain-ramips-for-mipsel_24kec+dsp-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2

分析toolchina

我们所需要的交叉编译工具就在`OpenWrt-Toolchain-ramips-for-mipsel_24kec+dsp-gcc-4.8-linaro_uClibc-0.9.33.2/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin`这个目录下
常用工具
mipsel-openwrt-linux-gcc gcc编译器
mipsel-openwrt-linux-gdb 调试器
mipsel-openwrt-linux-ld 链接器
mipsel-openwrt-linux-as 汇编器
使用方法和linux下对应的工具一样。

例程

下面是一个使用mipsel-openwrt-linux-gcc编译helloworld的小栗子

vi helloworld.c

输入如下内容:

#include <stdio.h>
int main(void){
    printf("hello world!\n");
    return 0;
}

然后使用mipsel-openwrt-linux-gcc编译

mipsel-openwrt-linux-gcc helloworld.c -o helloworld

然后把生成的helloworld文件复制到你的WRTnode开发板里,这里我们放在/tmp目录下

./tmp/helloworld

程序输出

hello world!

好了,小程序就到这儿了。