當前位置:首頁 » 網路設備 » 編譯軟路由

編譯軟路由

發布時間: 2021-03-02 04:17:19

① 我想為openwrt編譯一個軟體包,應該怎麼辦

下面是Makefile中一些約定俗成的目標名稱及其含義:

all
編譯整個軟體包,但不重建任何文檔。一般此目標作為默認的終極目標。此目標一般對所有源程序的編譯和連接使用"-g"選項,以使最終的可執行程序中包含調試信息。可使用 strip 程序去掉這些調試符號。
clean
清除當前目錄下在 make 過程中產生的文件。它不能刪除軟體包的配置文件,也不能刪除 build 時創建的那些文件。
distclean
類似於"clean",但增加刪除當前目錄下的的配置文件、build 過程產生的文件。
info
產生必要的 Info 文檔。
check 或 test
完成所有的自檢功能。在執行檢查之前,應確保所有程序已經被創建(但可以尚未安裝)。為了進行測試,需要實現在程序沒有安裝的情況下被執行的測試命令。
install
完成程序的編譯並將最終的可執行程序、庫文件等拷貝到指定的目錄。此種安裝一般不對可執行程序進行 strip 操作。
install-strip
和"install"類似,但是會對復制到安裝目錄下的可執行文件進行 strip 操作。
uninstall
刪除所有由"install"安裝的文件。
installcheck
執行安裝檢查。在執行安裝檢查之前,需要確保所有程序已經被創建並且被安裝。
installdirs
創建安裝目錄及其子目錄。它不能更改軟體的編譯目錄,而僅僅是創建程序的安裝目錄。

下面是 Makefile 中一些約定俗成的變數名稱及其含義:

這些約定俗成的變數分為三類。第一類代表可執行程序的名字,例如 CC 代表編譯器這個可執行程序;第二類代表程序使用的參數(多個參數使用空格分開),例如 CFLAGS 代表編譯器執行時使用的參數(一種怪異的做法是直接在 CC 中包含參數);第三類代表安裝目錄,例如 prefix 等等,含義簡單,下面只列出它們的默認值。

AR 函數庫打包程序,可創建靜態庫.a文檔。默認是"ar"。
AS 匯編程序。默認是"as"。
CC C編譯程序。默認是"cc"。
CXX C++編譯程序。默認是"g++"。
CPP C/C++預處理器。默認是"$(CC) -E"。
FC Fortran編譯器。默認是"f77"。
PC Pascal語言編譯器。默認是"pc"。
YACC Yacc文法分析器。默認是"yacc"。

ARFLAGS 函數庫打包程序的命令行參數。默認值是"rv"。
ASFLAGS 匯編程序的命令行參數。
CFLAGS C編譯程序的命令行參數。
CXXFLAGS C++編譯程序的命令行參數。
CPPFLAGS C/C++預處理器的命令行參數。
FFLAGS Fortran編譯器的命令行參數。
PFLAGS Pascal編譯器的命令行參數。
YFLAGS Yacc文法分析器的命令行參數。
LDFLAGS 鏈接器的命令行參數。

prefix /usr/local
exec_prefix $(prefix)
bindir $(exec_prefix)/bin
sbindir $(exec_prefix)/sbin
libexecdir $(exec_prefix)/libexec
datadir $(prefix)/share
sysconfdir $(prefix)/etc
sharedstatedir $(prefix)/com
localstatedir $(prefix)/var
libdir $(exec_prefix)/lib
infodir $(prefix)/info
includedir $(prefix)/include
oldincludedir $(prefix)/include
mandir $(prefix)/man
srcdir 需要編譯的源文件所在的目錄,無默認值

② 什麼是軟路由

顧名思義軟路由就是用軟體做路由
首先你要懂路由器的工作原理
路由器就是幫你選擇上網版路線的工具權它會選擇一條速度較快的不堵塞的線路來做傳輸
硬路由就是咱們現在經常能看見的路由器
軟路由就是台電腦加了一個軟路由的軟體
你要問速度哪個快一些個人感覺速度都差不多有人說硬路由快我說那是廢話花錢多的東西當然好了
但軟路由也不差而且管理方面很多優勢畢竟是電腦而且486都可以做
曾經給一個網吧做過一個軟路由100多台機器的現在用的還不錯
換過硬路由後來覺得速度差不多又換回來了

③ 如何編譯符合自己路由器的的OpenWrt固件

懂的不需要問;如不懂的,建議找對應路由器主晶元的open固件,自己研究一下;歡迎追問~!

④ 如何編譯自己的openwrt中文固件

今天路由固件的世界幾乎都是linksys WRT54G 開創出來的, 這個型號的固件開源之後,逐漸衍生出來今天的強盡的DDWRT/tomato/openwrt固件。linksys WRT54G 是博通的晶元。 正是因為這個歷史原因,DDWRT/tomato/openwrt固件 對博通晶元的支持最好,對其他的晶元比較差, 或者根本不支持其他的晶元。 個人認為,3個固件裡面,tomato的用戶體驗相對最好。但是僅僅支持博通晶元。DDWRT對博通晶元的支持好, 對一些athero也可以,對螃蟹的支持很差。但是DDWRT固件過於陳舊,比 tomato落後很多。openwrt固件可以支持很多晶元,但是用戶體驗相對最差,但是如果想用好openwrt固件,用戶需要自己編譯openwrt固件適應各種晶元/功能,或者說用戶需要具有獨立開發新產品的能力。國內的很多垃圾路由原廠固件就是盜用的openwrt固件,開發的時候把硬體要求降到最低,一旦售出,概不維護。因為沒有優秀固件的連續支持,找到螃蟹的好芯有啥意義,難道您想幫螃蟹開發維護固件。用戶需要的功能來自於優異的固件。但是目前看來,優秀固件的只支持博通的晶元。難道您的倉庫里積壓了太多的螃蟹晶元路由,需要用新手上路的第一貼,來論壇打軟廣告。

⑤ 如何編譯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 需要多長時間

在編譯抄的時候,是根據你的配置,進行下載程序包的,先是把這些程序包下載到./dl目錄下,再進行解壓編譯,和安裝。如果不是為了開發某一軟體的話,建議一開始的時候不要安裝太多的軟體,一是時間太長,然後很容易出錯。要用到的軟體在編譯好後,用opkg來安裝。

⑧ 如何為一個新路由器編譯openwrt

Openwrt 官方正式的發行版是已編譯好了的映像文件(後綴名bin或trx、trx2),此映像文件可從Openwrt官方網站的下載頁面中輕松獲取到,連接地址為 OpenWrt官方網站。這些編譯好的映像文件是基於默認的配置設置,且只針對受支持的平台或設備的。因此,為什麼要打造一個自己的映像文件,理由有以下四點:
您想擁有一個個性化的配置OpenWrt(彰顯個性,在朋友圈子裡顯擺顯擺,開個玩笑);
您想在實驗性的平台上測試OpenWrt;
您參與測試或參與開發OpenWrt的工作;
或者,最簡單的目的就是為了保持自己的Openwrt為最新版本;
若想實現上述目的,其實很簡單,按下述文字即可成功編譯出一個您的Openwrt來。
准備工作
在開始編譯Openwrt之前需要您做些准備工作;與其他編譯過程一樣,類似的編譯工具和編譯環境是必不可少的:
一個構建OpenWrt映像的系統平台,簡單說就是准備一個操作系統(比如Ubuntu、Debian等);
確保安裝了所需的依賴關系庫, (在debian系統中就是安裝各種需要的軟體包)
OpenWrt源代碼副本
首先, 開機登陸到支持編譯Openwrt的操作系統(廢話了)。實體機或者虛擬機(Vmware 或者 Qemu)里的操作系統都行,這里推薦使用Linux系統。 bsd和mac osx系統也可以編,但不推薦,且未驗證是否可編譯成功。下文假定您使用的是Debian操作系統,使用 apt-get 來管理包. 替代的選擇是 Ubuntu (分支 Kubuntu, Xubuntu 等即可)。
第二步, 就是安裝所需要的各種軟體包, 包括編譯器,解壓工具,特定的庫等. 這些工作可以簡單的通過鍵入以下命令 (通常需要root 或者是 sudo 許可權),以root許可權安裝下列軟體包(可能並不完整,會有提示,提示缺少即裝就可以了):

⑨ 有朋友能幫忙編譯移植一個開源的程序到openwrt嗎

有朋友能幫忙編來譯移植一個開源自的程序到openwrt
在webStorm中調試node.js程序,不使用命令行形式、不使用node-inspector模塊調試,純粹使用webStorm調試 可能是你的環境的問題。 webstorm那個版本的都可以集成調試。 注意啟動程序的時候使用debug 模式次可以調試。
我曾經遇到過一次這樣的問題,但是不一定和你是同一個問題,你可以參考下:
webStorm 10 出錯原因是我用的 iojs,即使是nodejs 也是 iojs 目錄下的 nodejs ,然後 webstrom 就報這個錯了。然後所有的斷點都無效。
Cannot stop on breakpoint e to internal error: org.jetbrains.v8.V8CommandProcessor$1: Error: Unknown command "getFrames" in request 換成真正的 nodejs 就好了。

⑩ 自編譯的openwrt x86固件需要多少時間和多少磁碟空間

您好來,很高興為您解答。

去官方源下載一個鏡像生成器,直接把需要的組件打包進去,編譯一次才幾分鍾。

如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】

希望我的回答對您有所幫助,望採納!

~ O(∩_∩)O~

熱點內容
網卡了的原因 發布:2021-03-16 21:18:20 瀏覽:602
聯通客服工作怎麼樣 發布:2021-03-16 21:17:49 瀏覽:218
路由器畫圖 發布:2021-03-16 21:17:21 瀏覽:403
大網卡收費 發布:2021-03-16 21:16:50 瀏覽:113
路由器免費送 發布:2021-03-16 21:16:19 瀏覽:985
孝昌營業廳 發布:2021-03-16 21:15:54 瀏覽:861
網速增速代碼 發布:2021-03-16 21:15:29 瀏覽:194
怎麼黑光纖 發布:2021-03-16 21:14:54 瀏覽:901
埠增大 發布:2021-03-16 21:14:20 瀏覽:709
開機沒信號是什麼原因 發布:2021-03-16 21:13:45 瀏覽:645