openwrt 安装交叉编译工具链(一)
openwrt 交叉工具链和一般的 linux 软件包一样,需要将其解压到需要安装的目录中,然后设置环境变量即可。下面是安装步骤。
1 ) 解压交叉工具链压缩包
首先去 下载中心把OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2工具包下载到你的路经。
这里我们演示将交叉工具链安装到 ubuntu 的“/opt”目录下。首先切换到 openwrt 的
根目录下,输入如下命令:
sudo tar jxvf ……OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2-C /opt/ (……
代表你的路径)
提示输入超级用户密码后, 系统将交叉工具链压缩包解压到 ubuntu 系统的/opt/目录下。
这里告诉大家一个非常实用的小技巧,如果用手工敲上面的命令,非常的费时费力,还
很容易出错,你可以敲完“sudo tar jxvf ./b”后按“Tab”键,系统将自动补全为
“sudo tar jxvf ./bin” ,后面的文件夹和文件也是同理,非常的省时省力。
2 )设置环境变量
sudo vi /etc/bash.bashrc
在最后一行添加
exportPATH=/opt/OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.
33.2/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/PATH
exportSTAGING_DIR=/your_openwrt_path/staging_dir
注意上面这个“STAGING_DIR”变量中的“your_openwrt_path”是读者实际放 openwrt
源码的根目录,如果这个“STAGING_DIR”变量不设置的话,会在用交叉工具链编译文件时
有警告,但是不影响编译结果。
最后保存退出。
接着在终端执行以下命令:
source/etc/bash.bashrc
建议重启一下ubuntu,否则可能找不到。
3 )检查是否安装成功
mips-openwrt-linux-gcc-v
此时应打印出交叉编译工具的一些信息,表示安装成功
上图提示的错误,不用管。
安装过程本人遇到的问题解决:
缺少ncurses安装包
解决:
apt-cachesearch ncurses
apt-getinstall libncurses5-dev
Checking 'svn'... failed.
解决:
apt-getinstall subversion
Checking 'working-g++'... failed.
解决:
apt-getinstall g++
报错:mips-openwrt-linux-uclibc-gcc.bin: error while loading sharedlibraries: libstdc++.so.6: cannot open shared object file: No such file ordirectory
原因:64位的系统,缺少 lib32stdc++6这个包
解决:~$sudo apt-get install lib32stdc++6
找不到:mips-openwrt-linux-uclibc-gcc路径
解决:sudoapt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
还有可能需要安装(根据自己需要):
A、批量命令安装
sudo apt-get install gcc g++ binutils patchbzip2 flex bison make autoconf gettext texinfo unzip sharutils subversionlibncurses5-dev ncurses-term zlib1g-dev
或者单条命令输入
sudo apt-get install g++
sudo apt-get install libncurses5-dev
sudo apt-get install zlib1g-dev
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install unzip
sudo apt-get install autoconf
sudo apt-get install gawk
sudo apt-get install make
sudo apt-get install gettext
sudo apt-get install gcc
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install libz-dev
sudo apt-get install asciidoc
sudo apt-get install subversion
sudo apt-get install git
sudo apt-get install sphinxsearch
sudo apt-get install libtool
sudo apt-get install sphinx-common
测试一下编译环境:
在 Ubuntu下,切换到任意目录,输入以下命令:
vi hello_world.c //用 vi 新建一个名为 hello_world.c 文件
并输入以下内容。
#include
intmain(char argc, char *argv[])
{
int i =1;
while(1){
//1~10 循环
printf("Helloworld!!!%d\n",i);//打印内容
if (i< 10){
i++;
}else{
i = 1;
}
sleep(1);//一秒钟打印一次
}
return0;
}
然后
mips-openwrt-linux-gcchello_world.c -o hello_world //用 mips-openwrt-linux-gcc编译
“hello_world.c”文件,并生成“hello_world”可以执行文件。
最后我们用winscp 将文件传输到 wh9331 开发板的“/tmp” 目录下, 在开发板的串口终端下,
执行如下命令。
/tmp/hello_world//执行“hello_world”可执行文件
用户可以用“Ctrl+c”组合键,停止程序的运行。