openwrt编译

编译LEDE(OpenWrt)树莓派3B+固件

你。 提交于 2020-02-26 05:52:46
网上的固件用着总有问题,这里自己编译一个,记录一下过程和遇到的问题。 LEDE原版项目地址 https://github.com/coolsnowwolf/lede 【0】遇到的问题:(解决办法都在文章中相应位置) g++: internal compiler error: Killed (program cc1plus) checking whether mknod can create fifo without root privileges 提示编译时间差异问题 【1】首先准备环境和依赖 sudo apt update && sudo apt upgrade sudo apt -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex node-uglify gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx-ucl libelf-dev autoconf automake libtool autopoint gcc

编译coccinelle-1.0.0-rc24时的错误"Error: Unbound module Parmap"以及解决方法

你离开我真会死。 提交于 2020-02-02 03:34:02
今天在编译一个老版的openwrt时,发现有如下的错误。 File "./main.ml", line 777, characters 22-49: Warning 52: Code should not depend on the actual values of this constructor's arguments. They are only for information and may change in future versions. (See manual section 8.5) File "./main.ml", line 956, characters 35-60: Error: Unbound module Parmap Makefile:656: recipe for target 'main.cmo' failed 后发现是ocaml的版本太新了,我的openwrt太古老了。将ocaml降到4.02.3,就可以解决了。 opam switch 4.02.3 eval $(opam config env) opam install ocamlfind opam install camlp4 来源: CSDN 作者: 断了线的程序猿 链接: https://blog.csdn.net/tianlu1001/article/details

openwrt编译 固件太大报错 .bin is too big

六月ゝ 毕业季﹏ 提交于 2020-01-16 02:06:32
openwrt只选中SSH LUCI 编译 报错 无法生成固件 问题出在:openwrt-ramips-mt7620-ex2700-squashfs-sysupgrade.bin 这个固件也没用 。 修改方法: 进入./target/linux/ramips/image 打开makefile 找到ex2700_mtd_size=3866624 改为8126464即可。影响未知 error log: if [ `stat -c%s "/home/l/linux/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7620/openwrt-ramips-mt7620-ex2700-squashfs-sysupgrade.bin"` -gt 3866624 ]; then echo "Warning: /home/l/linux/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7620/openwrt-ramips-mt7620-ex2700-squashfs-sysupgrade.bin is too big" >&2; else cp -fpR /home/l/linux/build_dir/target-mipsel

转:openwrt 框架分析

放肆的年华 提交于 2020-01-15 06:32:15
本文是本人对OpenWrt的Makefile的理解,并非转载。 OpenWrt是一个典型的嵌入式Linux工程,了解OpenWrt的Makefile的工作过程对提高嵌入式Linux工程的开发能力有极其重要意义。 OpenWrt的主Makefile文件只有100行,可以简单分为三部分,1~17行为前导部分,19~31为首次执行部分,33~101为再次执行部分。 前导部分 CURDIR为make默认变量,默认值为当前目录。 前导部分主要把变量TOPDIR赋值为当前目录,把变量LC_ALL、LANG赋值为C,并使用变量延伸指示符export,把上述三个变量延伸到下层Makefile。 使用文件使用指示符include引入$(TOPDIR)/include/host.mk。在OpenWrt的主Makefile文件使用了多次include指示符,说明主Makefile文件被拆分成多个文件,被拆分的文件放在不同的目录。拆分的目的是明确各部分的功能,而且增加其灵活性。 在前导部分比较费解的是使用world目标,在makefile中基本规则为: TARGETS : PREREQUISITES COMMAND ... 即makefile规则由目标、依赖、命令三部分组成,在OpenWrt的主Makefile文件的第一个目标world没有依赖和命令。它主要起到指示当make命令不带目标时所要执行的目标

openwrt简单ipk生成及Makefile解释

本小妞迷上赌 提交于 2020-01-14 06:02:49
前言 类似的文章其实网上比较多了,我写这个的目的: 1,网上文章良莠不齐,有些自己都没实际动手操作,随便复制粘贴,实际操作不可行. 2,基本只讲了操作,我当时最关心的Makefile文件的解释没有. 所以我自己总结了一篇. 说明 开发板为MT7620a,openwrt版本为:barrier_breaker_14.07.编译主机为ubuntu 14.04 32位. git clone git://git.openwrt.org/14.07/openwrt.git 关于怎么搭建编译环境以及编译请参考 网上 正文 下面我们开始,我们遵循传统以helloworld开始. 1.创建helloworld项目 首先我们新建helloworld.c文件和对应的Makefile文件 $mkdir -p ~/temp/hellworld/src $cd ~/temp/helloworld/src $touch helloworld.c Makefile 如下为helloworld.c的内容: #include <stdio.h> int main() { printf("This is my helloworld!\n"); return 0; } 如下为Makefile文件的内容: helloworld : helloworld.o $(CC) $(LDFLAGS) helloworld.o -o

openwrt 代码框架分析

让人想犯罪 __ 提交于 2019-12-27 14:47:11
这次讲讲openwrt的结构. 1.代码上来看有几个重要目录package, target, build_root, bin, dl.... ---build_dir/host目录是建立工具链时的临时目录 ---build_dir/toolchain- 是对应硬件的工具链的目录 ---staging_dir/toolchain- 则是工具链的安装位置 ---target/linux/目录里面是各个平台(arch)的相关代码 ---target/linux//config-3.10文件就是配置文件了 ---dl目录是'download'的缩写, 在编译前期,需要从网络下载的数据包都会放在这个目录下,这些软件包的一个特点就是,会自动安装在所编译的固件中,也就是我们make menuconfig的时候,为固件配置的一些软件包。如果我们需要更改这些源码包,只需要将更改好的源码包打包成相同的名字放在这个目录下,然后开始编译即可。编译时,会将软件包解压到build_dir目录下。 ---而在build_dir/目录下进行解压,编译和打补丁等。 ---package目录里面包含了我们在配置文件里设定的所有编译好的软件包。默认情况下,会有默认选择的软件包。在openwrt中ipk就是一切, 我们可以使用 $ ./scripts/feeds update来对软件包进行更新. $ ./scripts

Openwrt

大城市里の小女人 提交于 2019-12-05 17:27:26
ubuntu环境    点击 openwrt 查询自己系统需要安装的那些 比如我的系统是ubuntu 18.04,选择的就是18.04 查询设备CPU信息    点击 openwrt 查询自己路由器对应的CPU信息 准备OpenWrt环境 下载openwrt源码 这个过程可能会有点漫长,可以将github上的资源搬到码云,然后从码云下载,据说速度很快,详细的教程百度搜一下就有 git clone https://git.openwrt.org/openwrt/openwrt.git 选择自己需要的分支 cd openwrt/ # lede git checkout lede-17.01 # openwrt git checkout openwrt-18.06 编译检查 在安装Ubuntu环境的时候,我们已经安装了一部分需要的库,在这个地方如果报错,只需要根据报错的信息安装对应库就好了 make defconfig && make prereq 配置编译信息 在第二部我们已经查到自己路由信息,在这个地方只需要按照查询的信息选择就好 make menuconfig 关于一些选项的说明,来自于《OpenWrt智能路由系统开发 跟hoowa学智能路由》 如果只是生成SDK开发环境,勾选比较少,我所勾选的是 Target System (Atheros AR7xxx/AR9xxx)

解决编译openwrt mkimage时出现“linux/compiler-gcc7.h: No such file or directory”错误

元气小坏坏 提交于 2019-12-04 17:45:57
fatal error: linux/compiler-gcc6.h: No such file or directory fatal error: linux/compiler-gcc7.h: No such file or directory 最近安装了ubuntu18.04,然后编译openwrt中的mkimage时出现以上错误。 原因是电脑安装的gcc版本较高,为gcc7; 解决方案是给mkimage打个patch openwrt / tools / mkimage / patches / 200-compiler-support.patch diff --git b/include/linux/compiler-gcc.h a/include/linux/compiler-gcc.h index e057bd2..22ab246 100644 --- b/include/linux/compiler-gcc.h +++ a/include/linux/compiler-gcc.h @@ -5,14 +5,28 @@ /* * Common definitions for all gcc versions go here. */ -#define GCC_VERSION (__GNUC__ * 10000 \ - + __GNUC_MINOR__ * 100 \ - + _

总结一下OpenWRT编译经验

不问归期 提交于 2019-12-04 15:03:00
1.如何为固件增加软件包 软件包索引存储在feeds文件夹中,luci.index packages.index以及xwrt.index就是几乎所有软件包的索引 实例:从Openwrt trunk 移植 aria2 到 Openwrt backfire 察看trunk源码,在packages.index文件中搜索关键字"aria2",发现aria2软件包的描述 复制代码 Source-Makefile: feeds/packages/net/aria2/Makefile Package: aria2 Submenu: File Transfer Version: 1.15.1-1 Depends: +libc +USE_EGLIBC:librt +USE_EGLIBC:libpthread +libopenssl +zlib +libxml2 +libstdcpp Menu-Depends: Provides: Section: net Category: Network Title: lightweight download utility Maintainer: OpenWrt Developers Team <openwrt-devel@openwrt.org> Source: aria2-1.15.1.tar.bz2 Type: ipkg Description:

Ubuntu 12.04下编译Openwrt教程 推荐

依然范特西╮ 提交于 2019-12-04 06:12:55
搭建编译环境 Ubuntu x64 12.04下的命令: sudo apt-get install subversion sudo apt-get install git sudo apt-get install flex sudo apt-get install g++ sudo apt-get install gawk sudo apt-get install zlib1g-dev sudo apt-get install libncurses5-dev 当然,也可以将上面的命令合起来: sudo apt-get install subversion git flex g++ gawk zlib1g-dev libncurses5-dev 建立工作目录及获取openwrt源码 mkdir openwrt cd openwrt svn co svn://svn.openwrt.org/openwrt/trunk/ trunk是openwrt的开发版,openwrt有好几个分支,要编译其它分支,sun://后的换为相应的地址即可。 建立openwrt文件夹是为了方便存放不同分支的代码,如果你不需要,可以省略“mkdir openwrt”及“cd openwrt”。 如果svn的速度慢,可以使用openwrt的第三方镜像,比如国内的openwrt中文论坛所建的镜像。