FREEBSD下使用crunch整合編譯程式(轉)
PKkingson < pkkingson@cnfug.org >
鼓搗linux的朋友都知道,linux下有一個叫busybox的專案,它把大多數unix的基本命令都整合編譯成一個單獨的程式。 FREEBSD也有一種機制,叫做crunch.它允許我們不用載入標準庫也可以利用其它程式中的相同函式。crunch使用一個平板的文字檔案來定製整合的程式、編譯選項以及需要的LIBS。下面是我在freebsd4.9RELEASE上,整合編譯 /bin和/sbin下常用程式的一個配置檔案,這些檔案如果靜態編譯,大約佔用16M左右的空間.
# cat tinyware.conf
#crunch配置檔案最常見的指令有buildopts(編譯選項)、srcdirs(指定程式碼路徑)
#progs(指定要整合的程式)、ln(建立指向一個程式的連線)、libs(指定需要的庫)
#其他指令和crunch的細節請參看 man crunchgen和crunchide
#指定編譯時不包含ipsec、ipv6、和crypt
buildopts -DRELEASE_CRUNCH -DNOIPSEC -DNOINET6 -DNOCRYPT
#指定程式需要的程式碼路徑
srcdirs /usr/src/binsrcdirs /usr/src/sbinsrcdirs /usr/src/secure/lib
#/bin下的常見程式
progs cat chio chmod cp csh date dd df domainname echoprogs expr hostname kill ln ls mkdir mv ps pwd rm sh rmdirprogs sleep stty sync test ed
#建立一個指向test的連線
ln test [
#/sbin下的常見程式
progs adjkerntz dmesg disklabel fsck ifconfig initprogs ipf ipfs ipfstat ipfw ipmon ipnat natdprogs kldconfig kldload kldstat kldunload ldconfig md5 mknodprogs mount mount_null mount_union newfs mount_std umountln mount_std mount_procfsln newfs mount_mfsprogs ping reboot restore route routed shutdown sysctl
#指定這些程式需要的庫,想知道這些程式都需要什麼庫,你可以使用這樣的命令:
# grep -ir LDADD /usr/src/bin/*
# 這樣就能抽取出包含在Makefile中的指定庫的行
libs -ltermcap -lcrypt -lutil -lm -lcipher -lkvm -ll -leditlibs -lcrypto -lipx -lncurses -lmd -lalias -lipsec
寫完配置檔案後,就可以使用crunchgen來生成Makefile和程式碼了。
# crunchgen -m Makefile tinyware.conf
然後你可以這樣編譯它:
# make -f Makefile
如果沒什麼錯誤,應該就可以生成tinyware的可執行程式,如果出錯,請重新檢查是
否沒寫全libs和srcdirs
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-944806/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- FreeBSD 下使用crunch整合編譯程式(轉)編譯
- FreeBSD手工編譯安裝程式(轉)編譯
- FreeBSD編譯安裝新核心(轉)編譯
- FreeBSD中的GNU C編譯器--編譯器GCC(轉)編譯GC
- 使用ZendEncode編譯PHP程式(轉)編譯PHP
- FreeBSD下的可執行程式格式(轉)行程
- Linux下c mysql程式的編譯命令(轉)LinuxMySql編譯
- FreeBSD 整合Unix和Windows的方式(轉)Windows
- Windows下編譯使用AliyunOSSCSDKWindows編譯
- FreeBSD程式管理(轉)
- VS CODE下編譯ROS程式編譯ROS
- Windows下編譯使用AliyunOSSPHPSDKWindows編譯PHP
- 使用makefile編譯c程式編譯C程式
- FreeBSD下PPPoE的設定(轉)
- FreeBSD下PPPoE的設定 (轉)
- FreeBSD下安裝GNOME桌面(轉)
- 11g下編譯使用BBED編譯
- windows上使用clang編譯程式Windows編譯
- 表示式編譯計算器(下) (轉)編譯
- 在solrais下編譯安裝MySQL(轉)SolrAI編譯MySql
- linux(ubuntu)下的64位編譯器編譯32位程式LinuxUbuntu編譯
- 如何在Windows下使用make編譯MakefileWindows編譯
- ubuntu下編譯交叉編譯工具鏈Ubuntu編譯
- FreeBSD程式的許可權(轉)
- FreeBSD可執行程式格式(轉)行程
- FreeBSD設定和使用DHCP(轉)
- 在Eclipse 下整合ndk 自動編譯生成so檔案Eclipse編譯
- 附錄B Linux 下編譯 C 程式Linux編譯
- FreeBSD下 DNS的體系結構(轉)DNS
- 在命令列下使用vs的編譯器命令列編譯
- Fedora Core 5 下編譯安裝 Emacs 23(轉)編譯Mac
- FreeBSD定時執行程式(cron)(轉)行程
- FreeBSD設定和使用ipfw/natd(轉)
- 讓FreeBSD使用ntpd同步時間(轉)
- windows下使用Eclipse編譯執行MapReduce程式 Hadoop2.6.0/UbuntuWindowsEclipse編譯HadoopUbuntu
- Windows下編譯OpenOCDWindows編譯
- Windows下編譯VLCWindows編譯
- Windows下編譯Caffe並編譯Matlab介面Windows編譯Matlab