时间: 2021-07-31 作者:daque
鼓捣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、和cryptbuildopts -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 echo progs 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 init progs ipf ipfs ipfstat ipfw ipmon ipnat natdprogs kldconfig kldload kldstat kldunload ldconfig md5 mknod progs mount mount_null mount_union newfs mount_std umount ln 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