导航:首页 > 源码编译 > openwrt编译教程

openwrt编译教程

发布时间:2022-02-16 03:35:52

① 如何编译OpenWrt

本教程的编译环境:win7 专业版+VMwareWorkstation6.5虚拟机+Ylmf OS 3.0
编译的过程中要保持电脑联网
搭建编译环境
应用程序--附件--终端
sudo apt-get update (更新)
安装编译需要的组件:
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install make
sudo apt-get install autoconf
sudo apt-get install gettext
sudo apt-get install texinfo
sudo apt-get install unzip
sudo apt-get install sharutils
sudo apt-get install subversion
sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-term
sudo apt-get install zlib1g-dev
sudo apt-get install gawk
sudo apt-get install asciidoc
sudo apt-get install libz-dev
编译环境搭建完成
mkdir openwrt 创建一个openwrt文件夹
cd openwrt 进入openwrt文件夹
svn co svn://svn.openwrt.org/openwrt/branches/backfire 下载官网的源码
./scripts/feeds update -a 更新软件包
./scripts/feeds install -a 安装软件包
make menuconfig 进入定制界面(里面可以选择芯片的型号,集成的组件等等,根据实际情况选择)
defconfig
make V=99 (开始编译)
剩下的就是等待了,第一次编译需要的时间相对比较长,这个跟你的电脑配置和网速有关。

下面以编译TP-LINK 741N的openwrt固件为例,只编译基本的功能:

make menuconfig
Target System---AR71xx/AR7240/AR913x/AR934x CPU型号
Target Profile---TP-LINK 741
LuCI—>Collections—– <*> luci 添加Luci
LuCI—>Translations—- <*> luci-i18n-chinese 添加中文
EXT----YES
make V=99 开始编译
成功后在bin文件夹里有编译好的固件。

② openwrt怎么通过sdk编译

先查询出article,为持久态后再执行删除。
修改后的代码为:
@RequestMapping("/articledelete.do")
public String deleteArticle(Long id){
Article a = articleService.findById(id);
articleService.delete(a);
return "redirect:/user/articlelist.do";
}

③ openwrt编译需要哪些依赖库

openwrt mysql引用库
1. 用opkg安装myserver及其依赖包
opkg update
opkg install libpthread libncurses libreadline mysql-server

2. 创建mysql数据目录
mkdir -p /home/data/mysql
mkdir -p /home/data/tmp

3. 修改配置文件
vi /etc/my.cnf
datadir = /home/data/mysql/ #数据保存路径
tmpdir = /home/data/tmp/
bind-address = 0.0.0.0 #绑定的ip地址

4. 初始化建库
mysql_install_db --force

5. 启动mysql,并设定开机启动
/etc/init.d/mysqld start
/etc/init.d/mysqld enable

6. 设定密码
mysqladmin -u root password 'new-password'

④ 编译OpenWrt系统求助

编译openwrt固件并没有想象的那么复杂,我也是个小白,以下内容是我将网络上的编译教程稍微进行了一下整合。因为我发现很多编译教程没有说明如何更改flash相关配置。 安装ubuntu,不赘述。 注意在安装完成后,root不能直接登录,需要设置密码,

⑤ openwrt怎么编译应用程序

:Openwrt 官方正式的发行版是已编译好了的映像文件(后缀名bin或trx、trx2),此映像文件可从Openwrt官方网站的下载页面中轻松获取到,连接地址为 OpenWrt官方网站。这些编译好的映像文件是基于默认的配置设置,且只针对受支持的平台或设备的。

⑥ 如何为现有的openwrt编译一个opkg上没有的软件

一、安装编译环境(以ubuntu10.10为例)
依次输入以下命令
1.ubuntu开发环境需要的软件:
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make
autoconf gettext texinfo unzip sharutils subversion libncurses5-dev
ncurses-term zlib1g-dev gawk
sudo apt-get update
2.创建目录
mkdir openwrt
3.获取OpenWrt源代码和安装包,更新
svn checkout svn://svn.openwrt.org/openwrt/backfire
cd backfire
./scripts/feeds update -a
./scripts/feeds install -a
4.配置编译选项
make menuconfig
在target system里选择Broadcom BCM63xx,根据需要选择其他的软件,
*:表示该模块直接编译到核心中
M:该模块以被核心支持,可以后再安装
空白:不支持该模块
具体模块的起什么作用需要多google;
5.编译选项配置保存后,开始编译
make V=99
V=99表示输出详细的debug信息;
二、编译准备
1.下载源文件
下载地址:http://ftp.awk.cz/cntlm/ ,最新的版本是0.91rc6;
2.获取md5sum码
进入下载文件目录,在终端里输入
md5sum cntlm-0.91rc6.tar.gz
获得md5验证码:
3.编写makefile文件
在openwrt/backfire目录中的package目录下新建cntlm目录,在cntlm目录下新建文件,命名为makefile,编辑makefile文件,加入如下内容:
---------------------------------------------------------------------------------------------------------------------------
#
# Copyright (C) 2006-2008 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk

PKG_NAME:=cntlm
PKG_VERSION:=0.91rc6
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://ftp.awk.cz/cntlm/
PKG_MD5SUM:=

PKG_INSTALL:=1

include $(INCLUDE_DIR)/package.mk

define Package/cntlm
SUBMENU:=Proxy Servers
SECTION:=net
CATEGORY:=Network
TITLE:=Cntlm is a Fast NTLM Authentication Proxy
URL:=http://cntlm.sourceforge.net/
endef

define Package/cntlm/install
$(INSTALL_DIR) $(1)/usr/sbin
$(CP) $(PKG_INSTALL_DIR)/usr/sbin/cntlm $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/usr/share/man/man1
$(CP) $(PKG_INSTALL_DIR)/usr/share/man/man1/$(PKG_NAME).1 $(1)/usr/share/man/man1
$(INSTALL_DIR) $(1)/etc/
$(CP) $(PKG_INSTALL_DIR)/etc/cntlm.conf $(1)/etc/
endef

$(eval $(call BuildPackage,cntlm))
---------------------------------------------------------------------------------------------------------------------------
4.编写patch文件
由于BCM63xx核心是big endian,而我们常用的intel或AMD的cpu都是little
endian的,cntlm虽然能够自己检测编译环境的endian,但我们是在交叉编译环境中编译,cntlm检测出来的还是ubuntu系统的endian,因此需要设置手动endian为big
endian。具体就是将源码文件中的config/endian.c文件的rc设定为0.
将源码文件中的endian.c文件分别复制到a目录下的config目录和b目录下的config目录,打开b目录下的config目录中的endian.c文件,并将其修改为:
-------------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdint.h>

int main(int argc, char **argv) {
int rc;

rc = 0;
printf("%s\n", rc ? "little endian" : "big endian");

return rc;
}
---------------------------------------------------------------------------------------------------------------------------
然后保存。
运行:
diff -Naur a/config/endian.c b/config/endian.c >endian.patch
endian.patch文件内容如下:
---------------------------------------------------------------------------------------------------------------------------
--- a/config/endian.c 2007-08-20 07:23:17.000000000 +0800
+++ b/config/endian.c 2010-11-01 18:36:32.000000000 +0800
@@ -1,15 +1,11 @@

#include <stdio.h>

#include <stdint.h>

-uint8_t num[] = { 0xEF, 0xBE };

-/*
- * RC: 1 = LE, 0 = BE
- */

int main(int argc, char **argv) {
int rc;

- rc = (*((uint16_t *)num) == 0xBEEF);
+ rc = 0;
printf("%s\n", rc ? "little endian" : "big endian");

return rc;
---------------------------------------------------------------------------------------------------------------------------
将endian.patch文件复制到package/cntlm/patches/目录下(没有patches目录就新建一个)。

三、编译
1.选定安装包
终端输入:
make menuconfig
在Network——》Proxy Severs中选择cntlm;
2.开始编译
终端输入:
make package/cntlm/compile V=99
中间可能会出现一些提示(Note),可以不用理会。编译完成后在bin/packages目录下可以看到cntlm_0.91rc6-1_brcm63xx.ipk文件啦。

四、补充
上面提到在编译过程中出会现提示(Note),一般如下:
utils.c:1: note: someone does not honour COPTS correctly, passed 0 times
这是由于cntlm源码文件中CFLAG的设置是覆盖而不是续接,与openwrt要求不同,在openwrt一般写成CFLAG += 的方式。可以通过如下修改去除note:
将源码包中的Makefile文件复制到a目录和b目录,打开b目录下的Makefile文件,作如下修改:
CFLAGS+=$(FLAGS)
即增加上面的“+”号,保存。
运行:
diff -Naur a/Makefile b/Makefile > makefile.patch
得到的makefile.patch文件如下:
---------------------------------------------------------------------------------------------------------------------------
--- a/Makefile 2010-04-29 19:18:58.000000000 +0800
+++ b/Makefile 2010-11-09 20:17:33.405177000 +0800
@@ -16,7 +16,7 @@

CC=gcc

VER=`cat VERSION`

OBJS=utils.o ntlm.o xcrypt.o config.o socket.o acl.o auth.o http.o forward.o direct.o scanner.o pages.o main.o
-CFLAGS=$(FLAGS) -std=c99 -Wall -pedantic -O3 -D__BSD_VISIBLE
-D_ALL_SOURCE -D_XOPEN_SOURCE=600 -D_POSIX_C_SOURCE=200112
-D_ISOC99_SOURCE -D_REENTRANT -DVERSION=\"`cat VERSION`\" -g
+CFLAGS+=$(FLAGS) -std=c99 -Wall -pedantic -O3 -D__BSD_VISIBLE
-D_ALL_SOURCE -D_XOPEN_SOURCE=600 -D_POSIX_C_SOURCE=200112
-D_ISOC99_SOURCE -D_REENTRANT -DVERSION=\"`cat VERSION`\" -g

OS=$(shell uname -s)

OSLDFLAGS=$(shell [ $(OS) = "SunOS" ] && echo "-lrt -lsocket -lnsl")

LDFLAGS:=-lpthread $(OSLDFLAGS)
---------------------------------------------------------------------------------------------------------------------------
将makefile.patch文件复制到package/cntlm/patches目录下,重新编译即可。

⑦ 【疑问】openwrt里如何使用make编译源码

这有一个安装包,不知对你有用没。在X86虚拟机安装后,就有make了。不过我这还是用不了,提示没有cc 命令。 http://downloads.openwrt.org/backfire/10.03.1/x86_generic/packages/make_3.81-1_x86.ipk

⑧ 有谁知道到关于OpenWrt固件编译开发的入门的书籍在那里买 或者书名叫什么

编译openwrt固件并没有想象的那么复杂,我也是个小白,以下内容是我将网络上的编译教程稍微进行了一下整合。因为我发现很多编译教程没有说明如何更改flash相关配置。

安装ubuntu,不赘述。
注意在安装完成后,root不能直接登录,需要设置密码,设置方法,自己网络一下。

如果是虚拟机安装,将虚拟机的网卡配置为桥接模式;
**************以下操作需要在root用户下操作************************
编辑/etc/networt/option文件夹下的interfaces,将iface eth0 inet dhcp配置为dhcp模式,
然后执行/etc/init.d/networking restar即可自动获取到ip地址(此方法适用于家中或单位使用dhcp获取IP地址的场合,如果为固定地址,请自行研究)。互联网联通以后执行以下:

sudo apt-get update
安装编译需要的组件:
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install make
sudo apt-get install autoconf
sudo apt-get install gettext
sudo apt-get install texinfo
sudo apt-get install unzip
sudo apt-get install sharutils
sudo apt-get install subversion
sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-term
sudo apt-get install zlib1g-dev
sudo apt-get install gawk
sudo apt-get install asciidoc
sudo apt-get install libz-dev
如果编译过程中提示缺少某个组件,同样使用sudo apt-get install安装即可
编译环境搭建完成
**************注意:以下操作需要在自己建的用户下操作************************
mkdir openwrt 创建一个openwrt文件夹
cd openwrt 进入openwrt文件夹
svn co svn://svn.openwrt.org/openwrt/branches/backfire
或者svn co svn://svn.openwrt.org/openwrt/trunk下载官网的源码
注:backfire和trunk为两个不同分支的openwrt源码,backfire据说较为稳定,但是支持的路由器没有trunk多,trunk更多称之为测试版,但编译好后使用也没什么问题。编译的时候只需执行以上一条命令即可。执行完成后,会在openwrt下生成目录,使用backfire源码生成backfire目录,trunk同理。
然后cd trunk或者cd backfire
Svn up
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
进入定制界面(里面可以选择芯片的型号,集成的组件等等,根据实际情况选择,多编译几次就熟悉了)
使用make defconfig,检查编译环境,如要报错参考以下:
注:较常见的问题是编译时不能使用root用户编译,如果使用root登录,需要使用su 用户名切换到非root用户;如果切换用户后,报权限错误,再切换到root用户,使用 sudo chown -R [自己用户名] trunk(如果编译的是backfire源码,此处trunk替换为backfire),然后返回自己的用户名,重新进行编译。
make V=99
(开始编译)
剩下的就是等待了,第一次编译需要的时间相对比较长,这个跟你的电脑配置和网速有关。
以上为路由器未更改flash大小的编译过程;如果要编译非标准大小的flash固件,需要更改编译环境中的一些文件,以703N,使用trunk源码编译为例(trunk与backfire需要更改的文件不一样)
新版本trunk,703N编译8M固件需要更改以下两个文件:
1、 /turnk/tools/firmware-utils/src/mktplinkfw.c
在mktplinkfw.c中找到703N的相关属性,
.id = "TL-WR703Nv1",
.hw_id = HWID_TL_WR703N_V1,
.hw_rev = 1,
.layout_id = "8Mlzma",(改成8)
2、 /trunk/ target/linux/ar71xx/image/Makefile
Makefiel中找到以下内容
$(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWR703,tl-wr703n-v1,TL-WR703N,ttyATH0,115200,0x07030101,1,8Mlzma))
将4改成以上的8;

修改完成以上两个文件后,即可make V=99进行编译。

Backfire源码需要改动的文件,第一个与trunk一样,第二个文件位于
openwrt/backfire/target/linux/ar71xx/files/arch/mips/ar71xx目录下,找到对应的设备型号进行更改即可。

编译完成后,在bin/ar71xx目录下会有固件产生,固件名必包含编译的路由器型号,如果没有这两个文件,说明编译失败,有可能为编译时候选择的包太多,需重新选择后进行编译。

以上编译未进行相关配置文件的修改,如想修改配置文件,如默认打开无线等等,请自己网络/google。

注:以上大部分内容均来自互联网,我仅进行了整合。

阅读全文

与openwrt编译教程相关的资料

热点内容
linux弹出光盘命令 浏览:258
java加密jar包防止反编译 浏览:397
redhatlinux安装mysql 浏览:691
怎么把word和ppt放在一个文件夹 浏览:139
pdf优化器 浏览:131
剪力墙柱钢筋搭接需要加密吗 浏览:873
萤石云加密视频怎么播放 浏览:983
winar如何压缩内存占小 浏览:727
哪里有大的解压软件 浏览:583
一个云服务器如何放多个网站 浏览:324
圆柱体重计算法 浏览:232
谷歌服务器解析地址 浏览:701
应届毕业生程序员实习期怎么过 浏览:707
板石楼梯计算法 浏览:436
swift开发pdf 浏览:293
ideajava编译版本 浏览:964
迈普交换机常用命令 浏览:180
删除创建的文件夹命令 浏览:183
linuxmysql连接拒绝连接 浏览:823
php关键词源码 浏览:832