纳须弥

海纳百川
有容乃大

openwrt 安装交叉编译工具链

openwrt 安装交叉编译工具链 错误总结

Openwrt交叉编译

      首先我先介绍下什么是交叉编译:

      交叉编译,简单的说就是,就是在一个平台上生成另一个平台上的可执行文件,举个例子,我我用我的电脑(x86_64平台)编译出路由器(mips-AR71XX)上可以执行的二进制文件,要进行交叉编译首先就要有对应平台的编译器。

Openwrt的交叉编译并不复杂。

第一步,你需要得到toolchain(工具链),我个人理解这个就相当于编译器

       如何得到toolchian呢?有两种方法(推荐第一种)

1.到openwrt下载(要注意平台,http://downloads.openwrt.org

2.自己编译,在编译固件时可以看到有编译toolchain的选项

      这里告诉大家一个非常实用的小技巧,如果用手工敲上面的命令,非常的费时费力,还很容易出错,你可以敲完“sudo tar jxvf ./b”后按“Tab”键,系统将自动补全为“sudo tar jxvf ./bin” ,后面的文件夹和文件也是同理,非常的省时省力。

安装ToolChain

     步骤1:打开虚拟机,在 /home下创建 /home/opwnWRT 文件夹【注意需要用sudo才能创建】    

    步骤2:先将opwnWRT安装包 xxxxxx.tar.bz2从Windows中弄到ubuntu中去(此处使用共享文件夹)

    步骤3:复制。在ubuntu中进入到 /home/opwnWRT 所在的目录(用命令和窗口都行)

    步骤4:解压,用命令和窗口都行。解压指令如下:tar  -jxvf  xxxxx.tar.bz2  。按回车键后让ubnutu自动安装直到安装完毕。

修改ToolChain 的 PATH路径

在一个终端中执行  . mips-openwrt-linux-gcc  -v  命令后,该终端中就可以直接使用mips-openwrt-linux-gcc 了,但是只要关掉这个终端再另外打开一个立马就不行了。原因是我们本次终端中执行时的操作只是针对本终端,以后再打开的终端并未被执行过这个命令所以没导出。
    解决方案:如果要每次打开终端都可以看到这个环境变量,在  /etc/bash.bashrc  中

   (1)sudo vi /etc/bash.bashrc
         在最后一行添加

        export  PATH=/home/opwnWRT/toolchain-mips\_34kc\_gcc-4.8-linaro_uClibc-0.9.33.2/bin:$PATH
        export STAGING\_DIR=/your\_openwrt\_path/staging\_dir:$PATH
 注意:

(1)上面这个“STAGING\_DIR”变量中的“your\_openwrt\_path”是读者实际放 openwrt源码的根目录,如果这个“STAGING\_DIR”变量不设置的话,会在用交叉工具链编译文件时有警告,但是不影响编译结果。

(2)末尾的  :$PATH 不要弄错,否则系统的变量会出错,连 ls、copy等命令都操作不了。

(2)末尾的  :$PATH 不要弄错,否则系统的变量会出错,连 ls、copy等命令都操作不了。

(2)末尾的  :$PATH 不要弄错,否则系统的变量会出错,连 ls、copy等命令都操作不了。

重要事情说了3遍!!!

最后保存退出。

接着在终端执行以下命令:
        source  /etc/bash.bashrc
建议重启一下ubuntu,否则可能找不到。

检查是否安装成功
    mips-openwrt-linux-gcc  -v
   此时应打印出交叉编译工具的一些信息,表示安装成功

本原创文章未经允许不得转载 | 当前页面:纳须弥 » openwrt 安装交叉编译工具链

评论