如何为现有的openwrt编译一个opkg上没有的软件 我想为openwrt编译一个软件包,应该怎么办

\u5982\u4f55\u4e3a\u73b0\u6709\u7684openwrt\u7f16\u8bd1\u4e00\u4e2aopkg\u4e0a\u6ca1\u6709\u7684\u8f6f\u4ef6

\u4e00\u3001\u5b89\u88c5\u7f16\u8bd1\u73af\u5883(\u4ee5ubuntu10.10\u4e3a\u4f8b\uff09
\u4f9d\u6b21\u8f93\u5165\u4ee5\u4e0b\u547d\u4ee4\uff1a
1.ubuntu\u5f00\u53d1\u73af\u5883\u9700\u8981\u7684\u8f6f\u4ef6\uff1a
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.\u521b\u5efa\u76ee\u5f55
mkdir openwrt
3.\u83b7\u53d6OpenWrt\u6e90\u4ee3\u7801\u548c\u5b89\u88c5\u5305\uff0c\u66f4\u65b0
svn checkout svn://svn.openwrt.org/openwrt/backfire
cd backfire
./scripts/feeds update -a
./scripts/feeds install -a
4.\u914d\u7f6e\u7f16\u8bd1\u9009\u9879
make menuconfig
\u5728target system\u91cc\u9009\u62e9Broadcom BCM63xx\uff0c\u6839\u636e\u9700\u8981\u9009\u62e9\u5176\u4ed6\u7684\u8f6f\u4ef6\uff0c
*\uff1a\u8868\u793a\u8be5\u6a21\u5757\u76f4\u63a5\u7f16\u8bd1\u5230\u6838\u5fc3\u4e2d
M\uff1a\u8be5\u6a21\u5757\u4ee5\u88ab\u6838\u5fc3\u652f\u6301\uff0c\u53ef\u4ee5\u540e\u518d\u5b89\u88c5
\u7a7a\u767d\uff1a\u4e0d\u652f\u6301\u8be5\u6a21\u5757
\u5177\u4f53\u6a21\u5757\u7684\u8d77\u4ec0\u4e48\u4f5c\u7528\u9700\u8981\u591agoogle\uff1b
5.\u7f16\u8bd1\u9009\u9879\u914d\u7f6e\u4fdd\u5b58\u540e\uff0c\u5f00\u59cb\u7f16\u8bd1
make V=99
V=99\u8868\u793a\u8f93\u51fa\u8be6\u7ec6\u7684debug\u4fe1\u606f\uff1b
\u4e8c\u3001\u7f16\u8bd1\u51c6\u5907
1.\u4e0b\u8f7d\u6e90\u6587\u4ef6
\u4e0b\u8f7d\u5730\u5740\uff1ahttp://ftp.awk.cz/cntlm/ ,\u6700\u65b0\u7684\u7248\u672c\u662f0.91rc6\uff1b
2.\u83b7\u53d6md5sum\u7801
\u8fdb\u5165\u4e0b\u8f7d\u6587\u4ef6\u76ee\u5f55\uff0c\u5728\u7ec8\u7aef\u91cc\u8f93\u5165
md5sum cntlm-0.91rc6.tar.gz
\u83b7\u5f97md5\u9a8c\u8bc1\u7801\uff1a21ccd60294269cb8fbe3e2e49374ab1b
3.\u7f16\u5199makefile\u6587\u4ef6
\u5728openwrt/backfire\u76ee\u5f55\u4e2d\u7684package\u76ee\u5f55\u4e0b\u65b0\u5efacntlm\u76ee\u5f55\uff0c\u5728cntlm\u76ee\u5f55\u4e0b\u65b0\u5efa\u6587\u4ef6\uff0c\u547d\u540d\u4e3amakefile\uff0c\u7f16\u8f91makefile\u6587\u4ef6\uff0c\u52a0\u5165\u5982\u4e0b\u5185\u5bb9\uff1a
---------------------------------------------------------------------------------------------------------------------------
#
# 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:=21ccd60294269cb8fbe3e2e49374ab1b

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.\u7f16\u5199patch\u6587\u4ef6
\u7531\u4e8eBCM63xx\u6838\u5fc3\u662fbig endian\uff0c\u800c\u6211\u4eec\u5e38\u7528\u7684intel\u6216AMD\u7684cpu\u90fd\u662flittle
endian\u7684\uff0ccntlm\u867d\u7136\u80fd\u591f\u81ea\u5df1\u68c0\u6d4b\u7f16\u8bd1\u73af\u5883\u7684endian\uff0c\u4f46\u6211\u4eec\u662f\u5728\u4ea4\u53c9\u7f16\u8bd1\u73af\u5883\u4e2d\u7f16\u8bd1\uff0ccntlm\u68c0\u6d4b\u51fa\u6765\u7684\u8fd8\u662fubuntu\u7cfb\u7edf\u7684endian\uff0c\u56e0\u6b64\u9700\u8981\u8bbe\u7f6e\u624b\u52a8endian\u4e3abig
endian\u3002\u5177\u4f53\u5c31\u662f\u5c06\u6e90\u7801\u6587\u4ef6\u4e2d\u7684config/endian.c\u6587\u4ef6\u7684rc\u8bbe\u5b9a\u4e3a0.
\u5c06\u6e90\u7801\u6587\u4ef6\u4e2d\u7684endian.c\u6587\u4ef6\u5206\u522b\u590d\u5236\u5230a\u76ee\u5f55\u4e0b\u7684config\u76ee\u5f55\u548cb\u76ee\u5f55\u4e0b\u7684config\u76ee\u5f55\uff0c\u6253\u5f00b\u76ee\u5f55\u4e0b\u7684config\u76ee\u5f55\u4e2d\u7684endian.c\u6587\u4ef6\uff0c\u5e76\u5c06\u5176\u4fee\u6539\u4e3a\uff1a
-------------------------------------------------------------------------------------------------------------------------
#include
#include


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

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

return rc;
}
---------------------------------------------------------------------------------------------------------------------------
\u7136\u540e\u4fdd\u5b58\u3002
\u8fd0\u884c\uff1a
diff -Naur a/config/endian.c b/config/endian.c >endian.patch
endian.patch\u6587\u4ef6\u5185\u5bb9\u5982\u4e0b\uff1a
---------------------------------------------------------------------------------------------------------------------------
--- 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;
---------------------------------------------------------------------------------------------------------------------------
\u5c06endian.patch\u6587\u4ef6\u590d\u5236\u5230package/cntlm/patches/\u76ee\u5f55\u4e0b\uff08\u6ca1\u6709patches\u76ee\u5f55\u5c31\u65b0\u5efa\u4e00\u4e2a\uff09\u3002

\u4e09\u3001\u7f16\u8bd1
1.\u9009\u5b9a\u5b89\u88c5\u5305
\u7ec8\u7aef\u8f93\u5165\uff1a
make menuconfig
\u5728Network\u2014\u2014\u300bProxy Severs\u4e2d\u9009\u62e9cntlm\uff1b
2.\u5f00\u59cb\u7f16\u8bd1
\u7ec8\u7aef\u8f93\u5165\uff1a
make package/cntlm/compile V=99
\u4e2d\u95f4\u53ef\u80fd\u4f1a\u51fa\u73b0\u4e00\u4e9b\u63d0\u793a\uff08Note\uff09\uff0c\u53ef\u4ee5\u4e0d\u7528\u7406\u4f1a\u3002\u7f16\u8bd1\u5b8c\u6210\u540e\u5728bin/packages\u76ee\u5f55\u4e0b\u53ef\u4ee5\u770b\u5230cntlm_0.91rc6-1_brcm63xx.ipk\u6587\u4ef6\u5566\u3002

\u56db\u3001\u8865\u5145
\u4e0a\u9762\u63d0\u5230\u5728\u7f16\u8bd1\u8fc7\u7a0b\u4e2d\u51fa\u4f1a\u73b0\u63d0\u793a\uff08Note\uff09\uff0c\u4e00\u822c\u5982\u4e0b\uff1a
utils.c:1: note: someone does not honour COPTS correctly, passed 0 times
\u8fd9\u662f\u7531\u4e8ecntlm\u6e90\u7801\u6587\u4ef6\u4e2dCFLAG\u7684\u8bbe\u7f6e\u662f\u8986\u76d6\u800c\u4e0d\u662f\u7eed\u63a5\uff0c\u4e0eopenwrt\u8981\u6c42\u4e0d\u540c\uff0c\u5728openwrt\u4e00\u822c\u5199\u6210CFLAG += \u7684\u65b9\u5f0f\u3002\u53ef\u4ee5\u901a\u8fc7\u5982\u4e0b\u4fee\u6539\u53bb\u9664note\uff1a
\u5c06\u6e90\u7801\u5305\u4e2d\u7684Makefile\u6587\u4ef6\u590d\u5236\u5230a\u76ee\u5f55\u548cb\u76ee\u5f55\uff0c\u6253\u5f00b\u76ee\u5f55\u4e0b\u7684Makefile\u6587\u4ef6\uff0c\u4f5c\u5982\u4e0b\u4fee\u6539\uff1a
CFLAGS+=$(FLAGS)
\u5373\u589e\u52a0\u4e0a\u9762\u7684\u201c+\u201d\u53f7\uff0c\u4fdd\u5b58\u3002
\u8fd0\u884c\uff1a
diff -Naur a/Makefile b/Makefile > makefile.patch
\u5f97\u5230\u7684makefile.patch\u6587\u4ef6\u5982\u4e0b\uff1a
---------------------------------------------------------------------------------------------------------------------------
--- 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)
---------------------------------------------------------------------------------------------------------------------------
\u5c06makefile.patch\u6587\u4ef6\u590d\u5236\u5230package/cntlm/patches\u76ee\u5f55\u4e0b\uff0c\u91cd\u65b0\u7f16\u8bd1\u5373\u53ef\u3002

\u4e0b\u9762\u662fMakefile\u4e2d\u4e00\u4e9b\u7ea6\u5b9a\u4fd7\u6210\u7684\u76ee\u6807\u540d\u79f0\u53ca\u5176\u542b\u4e49\uff1a

all
\u7f16\u8bd1\u6574\u4e2a\u8f6f\u4ef6\u5305\uff0c\u4f46\u4e0d\u91cd\u5efa\u4efb\u4f55\u6587\u6863\u3002\u4e00\u822c\u6b64\u76ee\u6807\u4f5c\u4e3a\u9ed8\u8ba4\u7684\u7ec8\u6781\u76ee\u6807\u3002\u6b64\u76ee\u6807\u4e00\u822c\u5bf9\u6240\u6709\u6e90\u7a0b\u5e8f\u7684\u7f16\u8bd1\u548c\u8fde\u63a5\u4f7f\u7528"-g"\u9009\u9879\uff0c\u4ee5\u4f7f\u6700\u7ec8\u7684\u53ef\u6267\u884c\u7a0b\u5e8f\u4e2d\u5305\u542b\u8c03\u8bd5\u4fe1\u606f\u3002\u53ef\u4f7f\u7528 strip \u7a0b\u5e8f\u53bb\u6389\u8fd9\u4e9b\u8c03\u8bd5\u7b26\u53f7\u3002
clean
\u6e05\u9664\u5f53\u524d\u76ee\u5f55\u4e0b\u5728 make \u8fc7\u7a0b\u4e2d\u4ea7\u751f\u7684\u6587\u4ef6\u3002\u5b83\u4e0d\u80fd\u5220\u9664\u8f6f\u4ef6\u5305\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u4e5f\u4e0d\u80fd\u5220\u9664 build \u65f6\u521b\u5efa\u7684\u90a3\u4e9b\u6587\u4ef6\u3002
distclean
\u7c7b\u4f3c\u4e8e"clean"\uff0c\u4f46\u589e\u52a0\u5220\u9664\u5f53\u524d\u76ee\u5f55\u4e0b\u7684\u7684\u914d\u7f6e\u6587\u4ef6\u3001build \u8fc7\u7a0b\u4ea7\u751f\u7684\u6587\u4ef6\u3002
info
\u4ea7\u751f\u5fc5\u8981\u7684 Info \u6587\u6863\u3002
check \u6216 test
\u5b8c\u6210\u6240\u6709\u7684\u81ea\u68c0\u529f\u80fd\u3002\u5728\u6267\u884c\u68c0\u67e5\u4e4b\u524d\uff0c\u5e94\u786e\u4fdd\u6240\u6709\u7a0b\u5e8f\u5df2\u7ecf\u88ab\u521b\u5efa(\u4f46\u53ef\u4ee5\u5c1a\u672a\u5b89\u88c5)\u3002\u4e3a\u4e86\u8fdb\u884c\u6d4b\u8bd5\uff0c\u9700\u8981\u5b9e\u73b0\u5728\u7a0b\u5e8f\u6ca1\u6709\u5b89\u88c5\u7684\u60c5\u51b5\u4e0b\u88ab\u6267\u884c\u7684\u6d4b\u8bd5\u547d\u4ee4\u3002
install
\u5b8c\u6210\u7a0b\u5e8f\u7684\u7f16\u8bd1\u5e76\u5c06\u6700\u7ec8\u7684\u53ef\u6267\u884c\u7a0b\u5e8f\u3001\u5e93\u6587\u4ef6\u7b49\u62f7\u8d1d\u5230\u6307\u5b9a\u7684\u76ee\u5f55\u3002\u6b64\u79cd\u5b89\u88c5\u4e00\u822c\u4e0d\u5bf9\u53ef\u6267\u884c\u7a0b\u5e8f\u8fdb\u884c strip \u64cd\u4f5c\u3002
install-strip
\u548c"install"\u7c7b\u4f3c\uff0c\u4f46\u662f\u4f1a\u5bf9\u590d\u5236\u5230\u5b89\u88c5\u76ee\u5f55\u4e0b\u7684\u53ef\u6267\u884c\u6587\u4ef6\u8fdb\u884c strip \u64cd\u4f5c\u3002
uninstall
\u5220\u9664\u6240\u6709\u7531"install"\u5b89\u88c5\u7684\u6587\u4ef6\u3002
installcheck
\u6267\u884c\u5b89\u88c5\u68c0\u67e5\u3002\u5728\u6267\u884c\u5b89\u88c5\u68c0\u67e5\u4e4b\u524d\uff0c\u9700\u8981\u786e\u4fdd\u6240\u6709\u7a0b\u5e8f\u5df2\u7ecf\u88ab\u521b\u5efa\u5e76\u4e14\u88ab\u5b89\u88c5\u3002
installdirs
\u521b\u5efa\u5b89\u88c5\u76ee\u5f55\u53ca\u5176\u5b50\u76ee\u5f55\u3002\u5b83\u4e0d\u80fd\u66f4\u6539\u8f6f\u4ef6\u7684\u7f16\u8bd1\u76ee\u5f55\uff0c\u800c\u4ec5\u4ec5\u662f\u521b\u5efa\u7a0b\u5e8f\u7684\u5b89\u88c5\u76ee\u5f55\u3002

\u4e0b\u9762\u662f Makefile \u4e2d\u4e00\u4e9b\u7ea6\u5b9a\u4fd7\u6210\u7684\u53d8\u91cf\u540d\u79f0\u53ca\u5176\u542b\u4e49\uff1a

\u8fd9\u4e9b\u7ea6\u5b9a\u4fd7\u6210\u7684\u53d8\u91cf\u5206\u4e3a\u4e09\u7c7b\u3002\u7b2c\u4e00\u7c7b\u4ee3\u8868\u53ef\u6267\u884c\u7a0b\u5e8f\u7684\u540d\u5b57\uff0c\u4f8b\u5982 CC \u4ee3\u8868\u7f16\u8bd1\u5668\u8fd9\u4e2a\u53ef\u6267\u884c\u7a0b\u5e8f\uff1b\u7b2c\u4e8c\u7c7b\u4ee3\u8868\u7a0b\u5e8f\u4f7f\u7528\u7684\u53c2\u6570(\u591a\u4e2a\u53c2\u6570\u4f7f\u7528\u7a7a\u683c\u5206\u5f00)\uff0c\u4f8b\u5982 CFLAGS \u4ee3\u8868\u7f16\u8bd1\u5668\u6267\u884c\u65f6\u4f7f\u7528\u7684\u53c2\u6570(\u4e00\u79cd\u602a\u5f02\u7684\u505a\u6cd5\u662f\u76f4\u63a5\u5728 CC \u4e2d\u5305\u542b\u53c2\u6570)\uff1b\u7b2c\u4e09\u7c7b\u4ee3\u8868\u5b89\u88c5\u76ee\u5f55\uff0c\u4f8b\u5982 prefix \u7b49\u7b49\uff0c\u542b\u4e49\u7b80\u5355\uff0c\u4e0b\u9762\u53ea\u5217\u51fa\u5b83\u4eec\u7684\u9ed8\u8ba4\u503c\u3002

AR \u51fd\u6570\u5e93\u6253\u5305\u7a0b\u5e8f\uff0c\u53ef\u521b\u5efa\u9759\u6001\u5e93.a\u6587\u6863\u3002\u9ed8\u8ba4\u662f"ar"\u3002
AS \u6c47\u7f16\u7a0b\u5e8f\u3002\u9ed8\u8ba4\u662f"as"\u3002
CC C\u7f16\u8bd1\u7a0b\u5e8f\u3002\u9ed8\u8ba4\u662f"cc"\u3002
CXX C++\u7f16\u8bd1\u7a0b\u5e8f\u3002\u9ed8\u8ba4\u662f"g++"\u3002
CPP C/C++\u9884\u5904\u7406\u5668\u3002\u9ed8\u8ba4\u662f"$(CC) -E"\u3002
FC Fortran\u7f16\u8bd1\u5668\u3002\u9ed8\u8ba4\u662f"f77"\u3002
PC Pascal\u8bed\u8a00\u7f16\u8bd1\u5668\u3002\u9ed8\u8ba4\u662f"pc"\u3002
YACC Yacc\u6587\u6cd5\u5206\u6790\u5668\u3002\u9ed8\u8ba4\u662f"yacc"\u3002

ARFLAGS \u51fd\u6570\u5e93\u6253\u5305\u7a0b\u5e8f\u7684\u547d\u4ee4\u884c\u53c2\u6570\u3002\u9ed8\u8ba4\u503c\u662f"rv"\u3002
ASFLAGS \u6c47\u7f16\u7a0b\u5e8f\u7684\u547d\u4ee4\u884c\u53c2\u6570\u3002
CFLAGS C\u7f16\u8bd1\u7a0b\u5e8f\u7684\u547d\u4ee4\u884c\u53c2\u6570\u3002
CXXFLAGS C++\u7f16\u8bd1\u7a0b\u5e8f\u7684\u547d\u4ee4\u884c\u53c2\u6570\u3002
CPPFLAGS C/C++\u9884\u5904\u7406\u5668\u7684\u547d\u4ee4\u884c\u53c2\u6570\u3002
FFLAGS Fortran\u7f16\u8bd1\u5668\u7684\u547d\u4ee4\u884c\u53c2\u6570\u3002
PFLAGS Pascal\u7f16\u8bd1\u5668\u7684\u547d\u4ee4\u884c\u53c2\u6570\u3002
YFLAGS Yacc\u6587\u6cd5\u5206\u6790\u5668\u7684\u547d\u4ee4\u884c\u53c2\u6570\u3002
LDFLAGS \u94fe\u63a5\u5668\u7684\u547d\u4ee4\u884c\u53c2\u6570\u3002

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 \u9700\u8981\u7f16\u8bd1\u7684\u6e90\u6587\u4ef6\u6240\u5728\u7684\u76ee\u5f55\uff0c\u65e0\u9ed8\u8ba4\u503c

这是我去年编辑一个软件时记下的过程,希望对你有所帮助,我也是新手,按照官方提供的教程一步步修改,中间断断续续弄了近两个月,最后总算编译成功了。
一、安装编译环境(以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验证码:21ccd60294269cb8fbe3e2e49374ab1b
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:=21ccd60294269cb8fbe3e2e49374ab1b

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
    绛旓細1.浠g爜涓嬭浇閾炬帴澶辨晥銆傞娆$紪璇戞椂锛岀紪璇戠▼搴忎細瀹炴椂浠庣綉涓婁笅杞戒竴浜涜蒋浠跺寘鐨勪唬鐮併傚鏋滀笅杞介摼鎺ュけ鏁堬紝缂栬瘧灏变細澶辫触銆傝繖鏃堕渶瑕佹牴鎹蒋浠跺寘鐨勫悕绉帮紝浠庣綉涓婅嚜琛屼笅杞斤紝鐒跺悗鏀惧湪 openwrt/dl/ 鐩綍涓嬶紝鎵ц make -j2 V=s 缁х画缂栬瘧鍗冲彲銆2.杞欢鍖呰嚜韬湁闂銆傝繖鏃堕噸鏂版墽琛 make menuconfig 锛屽彇娑堝搴旇蒋浠跺寘閫変腑鍗冲彲銆
  • 濡備綍缂栬瘧OpenWrt
    绛旓細棣栧厛锛 寮鏈虹櫥闄嗗埌鏀寔缂栬瘧Openwrt鐨勬搷浣滅郴缁燂紙搴熻瘽浜嗭級銆傚疄浣撴満鎴栬呰櫄鎷熸満(Vmware 鎴栬 Qemu)閲岀殑鎿嶄綔绯荤粺閮借锛岃繖閲屾帹鑽愪娇鐢↙inux绯荤粺銆 bsd鍜宮ac osx绯荤粺涔熷彲浠ョ紪锛屼絾涓嶆帹鑽愶紝涓旀湭楠岃瘉鏄惁鍙紪璇戞垚鍔熴備笅鏂囧亣瀹氭偍浣跨敤鐨勬槸Debian鎿嶄綔绯荤粺锛屼娇鐢 apt-get 鏉ョ鐞嗗寘. 鏇夸唬鐨勯夋嫨鏄 Ubuntu (鍒嗘敮 Kubuntu,...
  • VMware涓婾buntu缂栬瘧Openwrt鐨勪簩娆$紪璇戞祦绋嬫槸浠涔?
    绛旓細1. 棣栧厛锛屽垏鎹㈠埌LEDE鐩綍锛歝d lede 2. 鍚屾鏇存柊婧愮爜锛歡it pull 3. 鏇存柊Feeds锛./scripts/feeds update -a && ./scripts/feeds install -a 4. 淇濆瓨缂栬瘧璁剧疆锛屼娇鐢╩ake defconfig锛岃繖灏嗛鍏堥厤缃墍鏈夐夐」銆5. 閬囧埌涓嬭浇dl搴撻熷害鎱㈢殑闂鏃讹紝鍙皾璇曚笅杞斤細make -j8 download 6. 寮濮嬬紪璇戯紝浣跨敤骞惰澶勭悊...
  • 濡備綍涓虹幇鏈夌殑openwrt缂栬瘧涓涓猳pkg涓婃病鏈夌殑杞欢
    绛旓細1.ubuntu寮鍙戠幆澧冮渶瑕佺殑杞欢锛歴udo 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...
  • 濡備綍涓虹幇鏈夌殑openwrt缂栬瘧涓涓猳pkg涓婃病鏈夌殑杞欢
    绛旓細涓棿鏂柇缁画寮勪簡杩戜袱涓湀锛屾垜涔熸槸鏂版墜杩欐槸鎴戝幓骞寸紪杈戜竴涓蒋浠舵椂璁颁笅鐨勮繃绋嬨 涓锛屾渶鍚庢荤畻缂栬瘧鎴愬姛浜嗭紝甯屾湜瀵逛綘鏈夋墍甯姪.10涓轰緥锛 渚濇杈撳叆浠ヤ笅鍛戒护锛屾寜鐓у畼鏂规彁渚涚殑鏁欑▼涓姝ユ淇敼銆佸畨瑁呯紪璇戠幆澧(浠buntu10锛 1
  • 濡備綍缂栬瘧OpenWrt
    绛旓細濡傛灉浣犲彧鏄缂栬瘧涓涓嚜瀹氫箟鐨勫浐浠讹紙榛樿甯︿粈涔堣蒋浠讹紝涓嶅甫浠涔堣蒋浠讹紝鑷畾涔夐粯璁ょ殑閰嶇疆绛夌瓑锛夛紝閭f帹鑽愪綘鐢↖mageBuilder锛岀畝鍗曞揩閫燂紝鐪佸績鐪佸姏 浣犺鏄渶瑕佽嚜宸卞紑鍙戣蒋浠跺寘锛岀敤OpenWRT鐨凷DK锛岀洿鎺ュ嚭ipk鏂囦欢 瑕佸畬鍏ㄩ噸鍐欏氨buildroot锛屽畬鍏ㄤ粠婧愪唬鐮佸紑濮嬫敼璧凤紝SVN鍜孏IT閮芥湁婧 ...
  • 濡備綍缂栬瘧openwrt鍥轰欢
    绛旓細缂栬瘧openwrt鍥轰欢鐨勬椂鍊欙紝涓昏瑕佹帉鎻″ソ缂栬緫鐨勪竴浜涙甯搁『搴忋傚缓璁繃绋嬪綋涓寜鐓х紪鐮佺殑鍒嗙被锛岀劧鍚庣浉搴斿湴缂栧嚭缂栫爜锛岀劧鍚庢牴鎹紪鐮佺殑鎿嶄綔椤哄簭缂栬緫鍥轰欢銆
  • 濡備綍缂栬瘧鑷繁鐨刼penwrt涓枃鍥轰欢
    绛旓細涓汉璁や负锛3涓浐浠堕噷闈紝tomato鐨勭敤鎴蜂綋楠岀浉瀵规渶濂姐備絾鏄粎浠呮敮鎸佸崥閫氳姱鐗囥侱DWRT瀵瑰崥閫氳姱鐗囩殑鏀寔濂斤紝 瀵逛竴浜沘thero涔熷彲浠ワ紝瀵硅瀮锜圭殑鏀寔寰堝樊銆備絾鏄疍DWRT鍥轰欢杩囦簬闄堟棫锛屾瘮 tomato钀藉悗寰堝銆俹penwrt鍥轰欢鍙互鏀寔寰堝鑺墖锛屼絾鏄敤鎴蜂綋楠岀浉瀵规渶宸紝銆浣嗘槸濡傛灉鎯崇敤濂給penwrt鍥轰欢锛岀敤鎴烽渶瑕佽嚜宸缂栬瘧openwrt鍥轰欢閫傚簲...
  • openwrt鎬庝箞閫夋嫨缂栬瘧鐗堟湰?
    绛旓細鍙互鍙傝冧互涓嬫楠わ細寮鏈虹櫥闄嗗埌鏀寔缂栬瘧Openwrt鐨勬搷浣滅郴缁 2. 瀹夎鎵闇瑕佺殑鍚勭杞欢鍖 3. 32浣(x86)璇锋墽琛屼笅鍒楀懡浠: # apt-get install build-essential asciidoc binutils bzip2 gawk gettext \git libncurses5-dev libz-dev patch unzip zlib1g-dev64浣(x86_64)璇锋墽琛屼笅鍒楀懡浠: # apt-get install...
  • 濡備綍鍦OpenWRT鐜涓嬪仛寮鍙
    绛旓細锛2锛塸ackages鏂囦欢澶: 閲岄潰鍖呭惈浜嗘垜浠湪閰嶇疆鏂囦欢閲岃瀹氱殑鎵鏈缂栬瘧濂界殑杞欢鍖呫傞粯璁ゆ儏鍐典笅锛屼細鏈夐粯璁ら夋嫨鐨勮蒋浠跺寘銆傦紙3锛塐penWrt-SDK.**.tar.bz2: 杩欎釜涔熷氨鏄垜浠畾鍒剁紪璇戝ソ鐨凮penWRT SDK鐜銆傛垜浠皢鐢ㄨ繖涓潵杩涜OpenWrt杞欢鍖呯殑寮鍙戙備緥濡傦紝鎴戞墍缂栬瘧濂界殑SDK鐜鍖呬负锛/bin/brcm47xx/OpenWrt-SDK-...
  • 扩展阅读:软路由openwrt官网 ... openwrt官网下载中心 ... 旧智能手机刷成openwrt ... 改openwrt最好的路由器 ... 刷openwrt最稳的路由器 ... 安卓机顶盒刷openwrt ... 适合刷openwrt路由器 ... 旧手机openwrt软路由 ... 手机安装openwrt ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网