首先我先介绍下什么是交叉编译:
交叉编译,简单的说就是,就是在一个平台上生成另一个平台上的可执行文件,举个例子,我我用我的电脑(x86_64平台)编译出路由器(mips-AR71XX)上可以执行的二进制文件,要进行交叉编译首先就要有对应平台的编译器。
Openwrt的交叉编译并不复杂。
第一步,你需要得到toolchain(工具链),我个人理解这个就相当于编译器
如何得到toolchian呢?有两种方法(推荐第一种)
1.到openwrt下载(要注意平台,http://downloads.openwrt.org)
2.自己编译,在编译固件时可以看到有编译toolchain的选项
这里告诉大家一个非常实用的小技巧,如果用手工敲上面的命令,非常的费时费力,还很容易出错,你可以敲完“sudo tar jxvf ./b”后按“Tab”键,系统将自动补全为“sudo tar jxvf ./bin” ,后面的文件夹和文件也是同理,非常的省时省力。
步骤1:打开虚拟机,在 /home下创建 /home/opwnWRT 文件夹【注意需要用sudo才能创建】
步骤2:先将opwnWRT安装包 xxxxxx.tar.bz2从Windows中弄到ubuntu中去(此处使用共享文件夹)
步骤3:复制。在ubuntu中进入到 /home/opwnWRT 所在的目录(用命令和窗口都行)
步骤4:解压,用命令和窗口都行。解压指令如下:tar -jxvf xxxxx.tar.bz2 。按回车键后让ubnutu自动安装直到安装完毕。
在一个终端中执行 . 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
此时应打印出交叉编译工具的一些信息,表示安装成功
白浪介绍:
(1)一位自媒体极客,面向射频、微波、天线、无线通信、智能硬件、软件编程、渗透安全、人工智能、区块链,Java、Android、C/C++、python等方向的综合能力培养提升。
(2)各种学习资料、学习软件分享(仅供学生学习)。
1.扫码关注公众号(Geekxiaobai)
2. 如在后台发送“Python高级编程”“CST”或“HFSS” 或“Altium”等,即可免费获得学习资源。仅供学习之用。
3. 扫码关注后,查看往期内容,会有更多资料惊喜等着你来拿哦
想要更多相关学习资料,可以在公众号后面留言哦,后期将会根据留言需求免费分享学习资料哦。
========******=========******========******=========******==========