導航:首頁 > 源碼編譯 > 把單個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相關的資料

熱點內容
三菱fx3u編程線纜 瀏覽:696
科目四用什麼app最好 瀏覽:615
python理財 瀏覽:879
python讀csv文件內容 瀏覽:306
有難度的編程項目經驗 瀏覽:518
網購食物哪個app好 瀏覽:369
為什麼櫻校顯示伺服器錯誤 瀏覽:270
亞馬遜app購物在哪裡下載 瀏覽:329
網路顯示連接伺服器失敗怎麼回事 瀏覽:585
如何確認是256加密 瀏覽:39
安卓加密教育視頻 瀏覽:265
華為會員字體在哪個文件夾 瀏覽:582
單片機原理及應用第二版課後習題答案 瀏覽:118
女程序員一天怎麼度過 瀏覽:654
輕易做程序員好嗎 瀏覽:56
訪問網路伺服器是什麼意思 瀏覽:367
區塊鏈屬性加密 瀏覽:995
小米k30怎麼創建文件夾 瀏覽:385
2355解壓軟體 瀏覽:819
php有多線程嗎 瀏覽:448