1.openwrt编译流程
2.OpenWRTå¼åä¹å建软件å
3.给openwrt18.06增加石像鬼QOS支持
4.å¦ä½å¨OpenWRTç¯å¢ä¸åå¼å
openwrt编译流程
编译OpenWRT源码至Ubuntu下,码添需先进入OpenWRT根目录。码添通常,码添简单操作为执行命令make V=。码添若系统为多核处理器,码添为加速编译过程,码添网站源码彩虹授权可添加-j选项,码添如make –j3 V=。码添在编译过程中,码添系统将自动下载所需软件包,码添请确保网络畅通。码添若在编译时遇到下载失败,码添可先执行make download指令,码添提前下载所需包,码添以避免后续错误。码添无锡wap源码
初次编译耗时较长,且需下载大量源码包,建议使用较好的***,以加速过程。完成编译后,会在源码目录中生成一个名为bin的文件夹,其中包含两个文件:openwrt-ramips-rtx-wrn-squashfs-factory.bin 和 openwrt-ramips-rtx-wrn-squashfs-sysupgrade.bin。榴莲溯源码根据路由器的原始固件或已安装的OpenWRT版本,选择相应的固件进行刷写。
在编译过程中,掌握一些技巧有助于提升效率。例如,执行make clean可以清理基本编译文件,make dirclean则会深度清理文件,pearocr源码解析相当于执行make clean后再清除交叉编译工具链目录。使用make distclean则会清除所有相关东西,包括下载的软件包、配置文件及feed内容等。在个人开发中,常遇menuconfig无法更新问题,可通过删除tmp缓存目录解决。redis源码改写预先下载软件包,再执行编译的make download V=方法同样有效。最后,删除.config文件以清空所有配置。
OpenWRTå¼åä¹å建软件å
OpenWRTäºæ¬¡å¼åæ¶æ»å ä¸äºå¼åèªå·±ç软件å ãæ¬æä»ç»å¦ä½å¨OpenWRTä¸å建ä¸ä¸ªæ°ç软件å ã
é¦å å建软件å æå¨çç®å½ï¼å¨openwrtæ ¹ç®å½ä¸æ§è¡:
è¿éçmypackagesç®å½åhelloworldç®å½é½æ¯æ°å»ºçï¼helloworldå°±æ¯æ们æ¬æ¬¡æ°å»ºç软件å çå åãæ们åç»å¯ä»¥å°èªå·±å建çå é½æ¾å¨mypackagesç®å½ä¸ã
helloworldå çç®å½ç»æå¦ä¸ï¼
å³è½¯ä»¶å helloworldç®å½ä¸çMakefileæ件ãä¾å以å注éå¦ä¸ï¼
ä¸é¢çä¾åä¸æ²¡æå®ä¹ define Build/Compile ï¼è¡¨ç¤ºä½¿ç¨é»è®¤çCompileå½ä»¤ãé»è®¤çCompileè¡ä¸ºå°±æ¯å¨$(PKG_BUILD_DIR)ç®å½ä¸æ§è¡makeå½ä»¤ã
helloworld.cå 容å¦ä¸ï¼
ä¸helloworld.cåç®å½çMakefileå 容å¦ä¸ï¼
说æï¼è¿éç$(CC)ã$(CFLAGS)ã$(LDFLAGS)é½æ¯ç±OpenWRTçbuildç³»ç»èµå¼çï¼CCå°±æ¯ç®æ å¹³å°å¯¹åºç交åç¼è¯å·¥å ·é¾éçgccã
å¨OpenWRTæ ¹ç®å½ä¸è¿è¡make menuconfigï¼å¯ä»¥çå°å¤åºæ¥ä¸ä¸ªâExamples â>âèåï¼æå车è¿å»åå¯ä»¥çå°æ们æ°å»ºçâhelloworldâ å ã ï¼ä»è¿éä¹å¯ä»¥çåºï¼å¨æ§è¡make menuconfigæ¶ï¼OpenWRTä¼èªå¨æ«æpackageç®å½ä»¥åå ¶åç®å½ä¸ææçå ãï¼
éä¸è¿ä¸ªâhelloworldâå ãç¶ååOpenWRTæ ¹ç®å½ä¸æ§è¡ï¼
æ¤å½ä»¤å³ä¸ºOpenWRTåpackageç¼è¯å½ä»¤ã
éè¿logï¼å¯ä»¥çå°æ们çå ç¼è¯æåãç¼è¯ç®å½ä¸º build_dir/target-XXXX/helloworld-1.0
å¦æè¦å次ç¼è¯ï¼å¯ä»¥æ§è¡ï¼
æ¬ææºç è§ï¼ /jian-soft/openwrt-package-example
åèæç« ï¼
给openwrt.增加石像鬼QOS支持
石像鬼(Gargoyle)固件以其出色的QoS性能,备受推崇。在迅雷满速下载的同时,网页可以实现秒开,游戏(如LOL)流畅不卡顿。这主要得益于石像鬼组件提供的强大功能。不单是QoS,单IP精确限速等特性,也离不开石像鬼的支持。例如,QOSV4和Emong's QoS等,皆基于石像鬼QoS实现。
对于想要自己编译带有石像鬼QoS支持的固件的用户,以下是如何在最新版本的OpenWRT中实现移植步骤:
首先,获取源代码。
之后,操作如下:
1. 添加imq补丁:复制-netfilter-mk.patch和-netfilter-mk.patch文件至/source目录。进入源码目录并执行命令:patch -p1 < -imq.patch 和 patch -p1 < -imq.patch。
2. 替换默认的iptables,删除OpenWRT .自带的iptables,将新版本的iptables文件放入。
3. 将gargoyle-package目录复制到/source/package目录内。
4. 复制-imq.patch到/source/target/linux/generic/pending-4.目录。
5. 在gargoyle-package/gargoyle/qos-gargoyle/files内替换qos_gargoyle.conf文件为qos_gargoyle。
值得注意的是,offload和qos_gargoyle配置存在冲突,因此在实际应用中,只能选择其一。
å¦ä½å¨OpenWRTç¯å¢ä¸åå¼å
1ãæ建å¼åç¯å¢é¦å ï¼æ们éè¦ä¸ä¸ªä¸ºè·¯ç±å¨å®å¶çå¼åç¯å¢ï¼å ·ä½å¯ä»¥åèæçå¦ä¸ç¯æ¥å¿ï¼ãæ建èªå·±çOpenWrtå¼åç¯å¢ããè¿éåªåä¸ä¸ªç®åçè¡¥å ï¼å¨æ§è¡make menuconfigåï¼ä¼åºç°ä¸å¾ï¼
å ¶ä¸ï¼å¾ä¸çº¢æ¡é¨åæ¯æå®å¶è·¯ç±å¨çç³»ç»çæ¬ï¼å¤§å®¶å¯ä»¥æ ¹æ®ä¸åçè·¯ç±å¨è¿è¡ä¸åçéæ©ï¼ç»¿æ¡é¨å表示æ们éè¦ç¼è¯ä¸ä¸ªSDKå¼åç¯å¢ï¼é»è®¤æ åµä¸ï¼æ¤é¡¹æªå¾éï¼ã
ç¼è¯è¿ç¨ä¸éè¦éè¿å®ç½ä¸è½½å¾å¤ç¸å ³ç软件å ï¼æä»¥å¿ é¡»ä¿è¯è½å¤é¡ºå©è¿ä¸å¤ç½ãç±äºä¸è½½é度çéå¶ï¼ç¼è¯è¿ç¨å¤§æ¦éè¦æ°å°æ¶ãç¼è¯ç»æåï¼ææç产åé½ä¼æ¾å¨ç¼è¯æ ¹ç®å½ä¸çbin/yourtarget/. ä¾å¦:ææç¼è¯ç产ç©é½æ¾å¨./bin/brcmxx/ä¸ï¼å ¶ä¸æ件主è¦æå ç±»ï¼
ï¼1ï¼.bin/.trx æ件: è¿äºé½æ¯å¨æ们æéçtarget-systemçç±»å«ä¹ä¸ï¼é对ä¸åè·¯ç±å¨åå·ãçæ¬ç¼è¯çè·¯ç±å¨åºä»¶ãè¿äºä¸åè·¯ç±å¨çåå·åçæ¬æ¯openwrté¢å 设置好çï¼æ们ä¸éè¦æ´æ¹ãè³äº.binå.trxçåºå«ï¼ä¸ç§è¯´æ³æ¯ï¼ç¬¬ä¸æ¬¡å·è·¯ç±å¨çæ¶åï¼éè¦ç¨.binæ件ï¼å¦æéè¦åå级ï¼åä¸è½å使ç¨.binæ件ï¼èéè¦ç¨.trxæ件ãåå æ¯ï¼.binæ¯å°è·¯ç±å¨çç¸å ³é 置信æ¯å.trxå°è£ å¨ä¸èµ·èçæçå°å ï¼ä¹å°±æ¯è¯´æ¯å å«è·¯ç±å¨çæ¬ä¿¡æ¯ç.trxãå¨ç¬¬ä¸æ¬¡å·åºä»¶çæ¶åï¼æ们éè¦æä¾è¿æ ·çä¿¡æ¯ï¼èå¨åç»å级æ¶ï¼åä¸åéè¦ï¼ç¨.trxæ件å³å¯ã
ï¼2ï¼packagesæ件夹: éé¢å å«äºæ们å¨é ç½®æ件é设å®çææç¼è¯å¥½ç软件å ãé»è®¤æ åµä¸ï¼ä¼æé»è®¤éæ©ç软件å ã
ï¼3ï¼OpenWrt-SDK.**.tar.bz2: è¿ä¸ªä¹å°±æ¯æ们å®å¶ç¼è¯å¥½çOpenWRT SDKç¯å¢ãæ们å°ç¨è¿ä¸ªæ¥è¿è¡OpenWrt软件å çå¼åãä¾å¦ï¼ææç¼è¯å¥½çSDKç¯å¢å 为ï¼/bin/brcmxx/OpenWrt-SDK-brcmxx-for-Linux-x_-gcc-4.3.3+cs_uClibc-0.9..1.tar.bz2
å¯ä»¥ä»å称ä¸çåºï¼target systemæ¯brcmxxï¼host systemæ¯Linux-x_ï¼ä½¿ç¨çç¼è¯å·¥å ·ä»¥ååºæ¯4.3.3+cs_uClibc-0.9..1ã
ï¼4ï¼md5sums æ件: è¿ä¸ªæ件记å½äºæææ们ç¼è¯å¥½çæ件çMD5å¼ï¼æ¥ä¿è¯æ件çå®æ´æ§ãå 为æ件çä¸å®æ´ï¼å¾å®¹æå°è·¯ç±å¨åæâç 头âã
éè¦ä¸»è¦çæ¯ï¼ç¼è¯å®æåï¼ä¸å®è¦å°ç¼è¯å¥½çbinç®å½è¿è¡å¤ä»½ï¼å¦æéé¢ä¸è¥¿å¯¹ä½ å¾éè¦çè¯ï¼ï¼å 为å¨ä¸æ¬¡ç¼è¯ä¹åï¼æ§è¡make clean ä¼å°binç®å½ä¸çæææ件ç»æ¸ é¤æ!!
2ã æ´æ¹åæpackages
å¨ç¼è¯æ ¹ç®å½ä¸ä¼æä¸ä¸ªdlçç®å½ï¼è¿ä¸ªç®å½å ¶å®æ¯âdownloadâçç®åï¼å¨ç¼è¯åæï¼éè¦ä»ç½ç»ä¸è½½çæ°æ®å é½ä¼æ¾å¨è¿ä¸ªç®å½ä¸ï¼è¿äºè½¯ä»¶å çä¸ä¸ªç¹ç¹å°±æ¯ï¼ä¼èªå¨å®è£ å¨æç¼è¯çåºä»¶ä¸ï¼ä¹å°±æ¯æ们make menuconfigçæ¶åï¼ä¸ºåºä»¶é ç½®çä¸äºè½¯ä»¶å ãå¦ææ们éè¦æ´æ¹è¿äºæºç å ï¼åªéè¦å°æ´æ¹å¥½çæºç å æå æç¸åçååæ¾å¨è¿ä¸ªç®å½ä¸ï¼ç¶åå¼å§ç¼è¯å³å¯ãç¼è¯æ¶ï¼ä¼å°è½¯ä»¶å 解åå°build_dirç®å½ä¸ã
å½ç¶ï¼ä½ ä¹å¯ä»¥èªå·±å¨dléé¢å建èªå·±ç软件å ï¼ç¶åæ´æ¹ç¸å ³çé ç½®æ件ï¼è®©openwrtå¯ä»¥è¯å«è¿ä¸ªæ件å ã
ç±äºæç项ç®æ´æ¹çå 容æ¯åºå±çï¼éè¦è·åºä»¶ä¸èµ·å®è£ ãæ以ï¼æ使ç¨çæ¹æ³å°±æ¯ç´æ¥æ´æ¹dlç®å½ä¸è½¯ä»¶å ï¼ç¶åéæ°è¿è¡åºä»¶ç¼è¯ãæè§ç±»ä¼¼äºLinuxçå æ ¸ç¼è¯ãåå¤ç¼è¿åå¤æ¬¡ï¼æ²¡æä»»ä½é®é¢ã
3ã æ°å»ºèªå·±çpackages
对äºèªå·±æ°å»ºçpackageï¼èè¿ä¸ªpackageåä¸éè¦éåºä»¶ä¸èµ·å®è£ ï¼æ¢å¥è¯è¯´ï¼å°±æ¯å¯ä»¥å½åä¸ä¸ªå¯é软件å çè¯ãæ们å¯ä»¥å©ç¨æ们çSDKç¯å¢æ¥åç¬ç¼è¯ï¼ç¼è¯åä¼çæä¸ä¸ªipkçæ件å ãç¶åå©ç¨ opkg install xxx.ipk æ¥å®è£ è¿ä¸ªè½¯ä»¶ã
ä¸é¢å ·ä½è¯´ä¸ï¼å¦ä½ç¼è¯ä¸ä¸ªhellowordç软件å ã
ï¼1ï¼é¦å ï¼ç¼åhelloworldç¨åº
ç¼åhelloworld.c
/