導航:首頁 > 源碼編譯 > 把單個ipk編譯進openwrt

把單個ipk編譯進openwrt

發布時間:2024-07-02 10:26:54

『壹』 openwrt編譯ipk時怎麼找到模塊

編譯的時候
以下為網友遇到的問題
Package helloworld is missing dependencies for the following libraries: libc.so.6 libpthread.so.0
缺少類庫,然後其實我發現我的類庫在系統里是存在的:
locate libc.so.6
結果:
/lib/i386-linux-gnu/libc.so.6
/lib/i386-linux-gnu/ libpthread.so.0
/lib64/libc.so.6
但是我的應用程序用到了 Libpthread,所以提示 少了2個依賴庫。

『貳』 奼傚姪,openwrt瀹夎卛pk杞浠舵姤閿


鏈変袱縐嶆柟寮忓畨瑁咃細鐧誨綍璺鐢眞eb鐣岄潰錛堜竴鑸鏄19161錛夛紝鍦╫penwrt鐨勮蔣浠跺畨瑁呯晫闈涓婇夋嫨涓婁紶瀹夎呫
棣栧厛錛岀敤ssh鐧誨綍璺鐢憋紙鍙鐢╬utty絳夎蔣浠訛級銆傜『淇濊礬鐢辮繛涓婄綉銆傗斺斺旈厤緗甈PPOE涓婄綉鈥斺斺斿弬鑰冿細openwrt鍛戒護琛岄厤緗甈PPOE涓婄綉鐨勬柟娉曪細.vi/etc/config/network.濡傛灉鏃犳硶緙栬緫錛屾寜a榪涘叆緙栬緫妯″紡銆
鏃㈢劧浣犵幇鍦ㄦ槸鍦/tmp鏂囦歡澶逛笅錛屼綘鍙鏄鎶婅蔣浠跺寘鏀懼湪榪欎釜鏂囦歡澶逛笅浜嗗惂銆
鐤戞槸搴旇ョ紪璇戣繘鍐呮牳鐨勫嵈娌$紪璇戣繘鍘伙紝鐒跺悗鎯沖湪鍚庢湡瀹夎呮椂浼氭姤閿欍傛湁浜哄緩璁榪欐牱瀹夎卭pkginstallPackageName.ipk--force-depends璇曡瘯鍚э紝鎴戜篃鏄鐧懼害鎵劇殑錛屾垜鍙嶆g敤鐨勪笢瑗誇竴鑸浼氱洿鎺ョ紪璇戣繘鍘伙紝娌¤佽繃姝ょ被閿欒銆
浣犺繖涓椹卞姩鍖呮槸濡備綍瀹夎呯殑銆傛槸鐢ㄥ師鏉ヤ僵甯︾殑椹卞姩鍚楋紝榪樻槸緗戜笂涓嬭澆鐨勩備綘鍙浠ヤ笅杞介┍鍔ㄧ簿鐏佃繘琛屾洿鏂扮綉鍗¢┍鍔ㄣ備竴鑸澶鏃х殑緗戝崱緗戜笂娌℃湁椹卞姩涔熸槸寰堥毦璇寸殑錛岄┍鍔ㄧ簿鐏墊病鏈夋壘鍒伴┍鍔ㄧ殑璇濓紝灝變嬌鐢ㄩ┍鍔ㄤ漢鐢燂紝澶氱敤鍑犱釜鏉ヨ瘯璇曘
鐜板湪trunk宸茬粡鏄疌haosCalmer浜嗐傜湅鎴戝師甯栭噷鏀規垚鐢˙arrierBreakerrc2鎴杛c3鐨刼pkg鏇存柊鍦板潃銆備綘鐨勯噰綰蟲槸鎴戝墠榪涚殑鍔ㄥ姏錛岃繕鏈変笉鎳傜殑鍦版柟錛岃風戶緇榪介棶銆傚備綘榪樻湁鍒鐨勯棶棰橈紝鍙鍙﹀栧悜鎴戞眰鍔╋紱絳旈樹笉鏄擄紝浜掔浉鐞嗚В錛屼簰鐩稿府鍔┿

『叄』 如何為現有的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
#include

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
#include

-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 ipk

因為openwrt也沒有對rg200e的bcm5358支持,就按照你的提議下載bcm47xx的ipk包在tomato上手動安裝,7zip解壓復制進u盤掛載的opt目錄,並修改裡面配置文件的路徑和許可權,嘗試很久,逐個排除遇到的故障,但最後還是不成功,提示運行有個錯誤,需要e...

『伍』 Openwrt 編譯ipk出錯,如下錯誤,怎麼解決 denghuinow@Ubuntu:

程序包有問題,或者缺少其他依賴包,感覺,建議不成熟見諒

『陸』 openwrt ssr plus+ 伺服器報錯

在原版openwrt上使用luci-app-ssr-plus這個插件有兩種方法:一種是編譯出適合架構的程序及依賴程序的ipk文件,另一種是在原版系統中加入插件然後整體編譯出一個固體刷入。安裝時首先要編譯軟體,然後安裝依賴及插件,如果你是原版openwrt,那麼執行完安裝後一定會報錯,提示找不到依賴,原因在於luci-app-ssr-plus依賴三個插件不在官方源中,所以我們要把下面幾個編譯好的插件傳上路由器提前安裝好。一點要注意的,在安裝所有非官方依賴後,安裝luci-app-ssr-plus前,還有一步操作。openwrt系統都會內置dnsmasq用於DNS服務,但是這個插件與dnsmasq-full是沖突的,所以要手動卸載掉,但是可以不手動安裝,作為官方源中可以找到的依賴插件,它是可以自動安裝的。

閱讀全文

與把單個ipk編譯進openwrt相關的資料

熱點內容
海康錄像機怎麼關視頻加密 瀏覽:786
編程以後有可能被機器人代替嗎 瀏覽:522
windows創建文件命令 瀏覽:986
linuxcopy文件內容 瀏覽:383
程序員帥哥禿頂 瀏覽:839
阿里雲伺服器開通流程 瀏覽:105
如何開雲伺服器 瀏覽:979
網站小說源碼 瀏覽:301
php用什麼ide 瀏覽:867
網上預約課程app哪個好 瀏覽:152
android兼容測試工具 瀏覽:96
雲伺服器不支持虛擬化怎麼辦 瀏覽:189
加密方式的演變 瀏覽:364
java常用演算法pdf 瀏覽:734
伺服器數據遇到異常什麼原因 瀏覽:450
phpexif信息 瀏覽:543
單片機三位元組浮點數 瀏覽:756
命令與征服泰伯利亞戰爭下載 瀏覽:378
c窗口界面編程 瀏覽:23
hypermill編程能做模板嗎 瀏覽:783