openwrt 編譯環境搭建及Makefile

2022-03-06 03:14:00 字數 4386 閱讀 6389

openwrt編譯環境搭建

作業系統 centos-5.8 64位

安裝gnome, 可使用xmanager

#yum -y groupinstall "x window system"

#yum -y groupinstall "desktop"

安裝svn

#yum install subversion 

# make menuconfig, 報錯

不執行 ./scripts/feeds update -a和 ./scripts/feeds install -a 之前,

make menuconfig裡是看不到luci選項的。

#vim readme

"./scripts/feeds update -a" to get all the latest package definitions defined in feeds.conf/ feeds.conf.default respectively.

"./scripts/feeds install -a" to install symlinks of all of them into package/feeds/

在package/feeds/luci/中(原本是沒有該目錄的, package/feeds目錄是在執行完./scripts/feeds 的兩條命令之後生成的), 可以看到一些鏈結, ll看一下

例:community-profiles -> ../../../feeds/luci/contrib/package/community-profiles/

此處的feeds是trunk目錄下的feeds目錄, 原來也是沒有的, 在執行完./scripts/feeds兩條命令之後生成。

tmp目錄本來也是沒有的, 在執行完上述兩條命令後, 在tmp目錄下生成.config和其他檔案, 在make menuconfig之後, tmp/.config更新。

# make menuconfig, 報錯

1. please install the gnu c++ compiler (g++).

#yum install gcc-c++;

2. please install ncurses. (missing libncurses.so or ncurses.h)

#yum install ncurses;

#yum install ncurses-devel;

3. please install zlib. ( missing libz.so or zlib.h)

#yum install zlib-devel

4. please install git(git-core) v1.6.5 or later.

用wget工具: #wget 

#vim install;

#make prefix=/usr all doc info ;# as yourself

缺少ssl.h       #yum install openssl-devel;

缺少curl    http.h:54: error: expected specifier-qualifier-list before 『curlcode』

#yum install curl

還是缺少curl

#yum install curl-devel

warning: expat.h缺少

#yum install expat-devel;

/bin/sh: msgfmt command not found;

#yum install gettext;

/bin/sh: asciidoc command not found;

安裝mercurial

#wget 

#cd mercurial

#make

#make install

mercurial/base85.c:13:20: error: python.h: no such file or directory

安裝python

#yum install python

#yum install python-devel

此時make install 時, 提示需要安裝python-docutils

wget

#wget  

報錯:error: certificate common name `*.c.ssl.fastly.net' doesn't match requested host name `www.python.org'.

#wget --no-check-certificate

#hg clone -r 8.6.9 asciidoc-8.6.9

#autoconf: autoconf command not found

#yum install autoconf

git安裝好之後,#make menuconfig正常, 選定luci, 生成.config(trunk下原來是沒有.config檔案的)

#make

在./tmp/.config-packge.in中(此.config-package.in也是make menuconfig生成的), 有menu "luci"的配置

在.config中, config_package_luci=y

在./tmp/.config中,config_package_luci=y

在./tmp/.packagedeps:package-$(config_package_luci) += feeds/luci/luci 中

太多的makefile和config.in都是後來生成的, 有必要從開始makefile看起。

一: make menuconfig v=99過程

topdir的makfile中, include $(topdir)/include/toplevel.mk

toplevel.mk中, 

menuconfig: scripts/config/mconf prepare-tmpinfo force

if [ \! -e .config -a -e $(home)/.openwrt/defconfig ]; then \

cp $(home)/.openwrt/defconfig .config; \

fi$< config.in

(1)scripts/config/mconf,toplevel.mk中,:

//export makeflags= ;umask 022; make -w -s -c scripts/config all cc="gcc"

// topdir的makefile中, _single=export makeflags=$(space)

中,submake :=umask 022; $(submake)              umask 022, 表示預設的資料夾許可權為755(777-022). 檔案許可權為644(666-022)?

scrpts/config/makefile中,

all:conf mconf

conf: $(conf-objs)  //conf-objs :conf.o zconf.tab.o

mconf: $(mconf-objs) $(lxidag-objs)

$(cc) -o $@ $^ $(call check_lxdialog, ldflags, $(cc)) ,

生成mconf, 至此, menuconfig的第乙個依賴, scripts/config/mconf 完成, 生成/scripts/config/mconf檔案

(2)prepare-tmpinfo,

OpenWRT 快速搭建編譯環境

配置宿主機的開發環境 openwrt官方推薦使用debian作為開發環境,但是基於debian的ubuntu似乎也沒有太大問題,我這裡是ubuntu16.04 amd64 執行以下命令 sudo apt get update 解壓openwrt cc mt76xx zhuotk source 在資料...

Openwrt,交叉編譯環境配置

1 解壓 tar jxvf openwrt sdk ramips for redhat x86 64 gcc 4.8 linaro uclibc 0.9.33.2.tar.bz2 ps 解壓檔案需要在家目錄解壓,否則會造成解壓出現問題,導致交叉編譯失敗的後果。2 修改環境變數 sudo vim ge...

centos 搭建Openwrt開發環境

openwrt的原始碼實施了版本控制,可以使用git 或者 svn進行轉殖 git git clone git svn svn co svn yum install git 然後可以切換到原始碼目錄 make menuconfig 此時會報一大堆的 需要解決的依賴,乙個個解決就ok 了,此處簡單介紹...