FreeBSD 下使用crunch整合編譯程式(轉)
FreeBSD 下使用crunch整合編譯程式(轉)[@more@]PKkingson < >
鼓搗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/bin
srcdirs /usr/src/sbin
srcdirs /usr/src/secure/lib
#/bin下的常見程式
progs cat chio chmod cp csh date dd df domainname echo
progs expr hostname kill ln ls mkdir mv ps pwd rm sh rmdir
progs sleep stty sync test ed
#建立一個指向test的連線
ln test [
#/sbin下的常見程式
progs adjkerntz dmesg disklabel fsck ifconfig init
progs ipf ipfs ipfstat ipfw ipmon ipnat natd
progs kldconfig kldload kldstat kldunload ldconfig md5 mknod
progs mount mount_null mount_union newfs mount_std umount
ln mount_std mount_procfs
ln newfs mount_mfs
progs ping reboot restore route routed shutdown sysctl
#指定這些程式需要的庫,想知道這些程式都需要什麼庫,你可以使用這樣的命令:
# grep -ir LDADD /usr/src/bin/*
# 這樣就能抽取出包含在Makefile中的指定庫的行
libs -ltermcap -lcrypt -lutil -lm -lcipher -lkvm -ll -ledit
libs -lcrypto -lipx -lncurses -lmd -lalias -lipsec
寫完配置檔案後,就可以使用crunchgen來生成Makefile和程式碼了。
# crunchgen -m Makefile tinyware.conf
然後你可以這樣編譯它:
# make -f Makefile
如果沒什麼錯誤,應該就可以生成tinyware的可執行程式,如果出錯,請重新檢查是
否沒寫全libs和srcdirs
鼓搗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/bin
srcdirs /usr/src/sbin
srcdirs /usr/src/secure/lib
#/bin下的常見程式
progs cat chio chmod cp csh date dd df domainname echo
progs expr hostname kill ln ls mkdir mv ps pwd rm sh rmdir
progs sleep stty sync test ed
#建立一個指向test的連線
ln test [
#/sbin下的常見程式
progs adjkerntz dmesg disklabel fsck ifconfig init
progs ipf ipfs ipfstat ipfw ipmon ipnat natd
progs kldconfig kldload kldstat kldunload ldconfig md5 mknod
progs mount mount_null mount_union newfs mount_std umount
ln mount_std mount_procfs
ln newfs mount_mfs
progs ping reboot restore route routed shutdown sysctl
#指定這些程式需要的庫,想知道這些程式都需要什麼庫,你可以使用這樣的命令:
# grep -ir LDADD /usr/src/bin/*
# 這樣就能抽取出包含在Makefile中的指定庫的行
libs -ltermcap -lcrypt -lutil -lm -lcipher -lkvm -ll -ledit
libs -lcrypto -lipx -lncurses -lmd -lalias -lipsec
寫完配置檔案後,就可以使用crunchgen來生成Makefile和程式碼了。
# crunchgen -m Makefile tinyware.conf
然後你可以這樣編譯它:
# make -f Makefile
如果沒什麼錯誤,應該就可以生成tinyware的可執行程式,如果出錯,請重新檢查是
否沒寫全libs和srcdirs
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-950334/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 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