谷动谷力

 找回密码
 立即注册
查看: 2160|回复: 0
打印 上一主题 下一主题
收起左侧

Openwrt 交叉编译(Crosscompile)及使用SDK生成ipk安装包

[复制链接]
跳转到指定楼层
楼主
发表于 2022-10-24 17:02:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
Openwrt 交叉编译(Crosscompile)及使用SDK生成ipk安装包Openwrt交叉编译

首先我先介绍下什么是交叉编译:
交叉编译,简单的说就是,就是在一个平台上生成另一个平台上的可执行文件,举个例子,我我用我的电脑(x86_64平台)编译出路由器(mips-AR71XX)上可以执行的二进制文件,要进行交叉编译首先就要有对应平台的编译器。
Openwrt的交叉编译并不复杂。
第一步,你需要得到toolchain(工具链),我个人理解这个就相当于编译器
如何得到toolchian呢?有两种方法
1.到openwrt下载(要注意平台,比如我的路由器是tp-wr703n,所对应的平台就是AR71XX,就要到http://downloads.openwrt.org/bar ... .07/ar71xx/generic/下载  OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2
2.自己编译,在编译固件时可以看到有编译toolchain的选项(如果不知道我在说什么的话,先学习下openwrt编译) 得到工具链后将其解压
第二步,设置环境变量
这里只有两个变量需要设置
1.将工具链中的bin文件夹加入PATH
2.添加一个STAGING_DIR  变量,将其指向放toolchain的文件夹,比如我把toolchain解压到了/home/yj/openwrt/mips-linux-gcc/下,就把STAGING_DIR 的值赋为/home/yj/openwrt/mips-linux-gcc/
环境变量的作用及设置请自行百度,附我的配置(看前两行)
第三步,进行编译
设置好环境变量后,可以检验一下,在shell中输入编译器的前几部分,看是否可以自动补全
接着我们就可以进行编译了
1.编译单个文件,就像普通的编译一样,只不过把gcc换成了交叉编译的编译器  执行  mips-openwrt-linux-uclibc-gcc test.c -o test    得到的test就是路由器上可以执行的文件
2.编译软件,在./configure 时加上–host=mips-openwrt-linux-uclibc
以mentohust为例
再执行make 命令就可以生成可执行文件了
在src文件夹中就可以看到mentohust的可执行文件已经生成
利用SDK来生成ipk文件
SDK中其实是包含toolchain的,SDK就是将编译好的文件在打包到一个ipk中,便于安装。
SDK与toolchain一样,可以自己编译也可以从网上下载,不过我试了下直接下载的使用有问题,而自己编译的可以使用。
SDK生成ipk包时需要的只是一个makefile文件,makefile里写了所需下载的文件、生成规则、软件版本、类型等。makefile的写法可以到openwrt的官方wiki中找到。
再次以mentohust为例生成ipk包。
mentohust.tar.gz 这是其makefile文件
解压后的文件夹放到SDK的package文件夹中
然后执行  make package/mentohust/compile
这是编译指定包,编译package里所有的包的话直接 make就可以了
编译后,生成ipk包


+12

最近谁赞过

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-11-17 07:24 , Processed in 0.173179 second(s), 45 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表