crunchgen.1 1.11.2.1

ppp.8 1.209.2.13
This commit is contained in:
Kazuo Horikawa 2000-11-17 03:19:53 +00:00
parent eeb803f1dc
commit 395d10ef21
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=8384
2 changed files with 77 additions and 33 deletions

View file

@ -22,7 +22,7 @@
.\" Author: James da Silva, Systems Design and Analysis Group .\" Author: James da Silva, Systems Design and Analysis Group
.\" Computer Science Department .\" Computer Science Department
.\" University of Maryland at College Park .\" University of Maryland at College Park
.\" %FreeBSD: src/usr.sbin/crunch/crunchgen/crunchgen.1,v 1.11 2000/03/01 14:08:47 sheldonh Exp % .\" %FreeBSD: src/usr.sbin/crunch/crunchgen/crunchgen.1,v 1.11.2.1 2000/11/15 18:38:48 joe Exp %
.\" .\"
.Dd September 29, 1997 .Dd September 29, 1997
.\" jpman %Id: crunchgen.1,v 1.3 1997/07/29 13:43:59 konuma Stab % .\" jpman %Id: crunchgen.1,v 1.3 1997/07/29 13:43:59 konuma Stab %
@ -33,14 +33,13 @@
.Nd クランチバイナリ構築環境を作成する .Nd クランチバイナリ構築環境を作成する
.Sh 書式 .Sh 書式
.Nm \&crunchgen .Nm \&crunchgen
.Op Fl fql .Op Fl foql
.Op Fl h Ar makefile-header-name .Op Fl h Ar makefile-header-name
.Op Fl m Ar makefile-name .Op Fl m Ar makefile-name
.Op Fl c Ar c-file-name .Op Fl c Ar c-file-name
.Op Fl e Ar exec-file-name .Op Fl e Ar exec-file-name
.Op Ar conf-file .Op Ar conf-file
.Sh 解説 .Sh 解説
クランチバイナリ(crunched binary)は、 クランチバイナリ(crunched binary)は、
たくさんの別々のプログラムをひとつにまとめて たくさんの別々のプログラムをひとつにまとめて
単一の実行形式にしたプログラムです。 単一の実行形式にしたプログラムです。
@ -49,9 +48,8 @@
複数プログラムをクランチしてひとつにまとめる主たる理由は、 複数プログラムをクランチしてひとつにまとめる主たる理由は、
インストールフロッピあるいはシステム回復フロッピ上に、 インストールフロッピあるいはシステム回復フロッピ上に、
できるだけ多くのプログラムを収納するためです。 できるだけ多くのプログラムを収納するためです。
.Pp .Pp
.Nm crunchgen .Nm
.Ar conf-file .Ar conf-file
に記述されたクランチバイナリのための設定項目を読み込み、 に記述されたクランチバイナリのための設定項目を読み込み、
@ -69,7 +67,31 @@ Makefile
.Nm crunchide .Nm crunchide
を用い、全ての不要なシンボルを隠すことで を用い、全ての不要なシンボルを隠すことで
コンポーネントプログラム間のリンク時のシンボル競合を防ぎます。 コンポーネントプログラム間のリンク時のシンボル競合を防ぎます。
.Pp
.Nm
は特殊な要件をパッケージの
.Pa Makefiles
に課しており、このことが原因で
.Pa Makefiles
が非 BSD ソース用に使えなくなっています。
特に、
.Nm Makefile
はターゲット
.Ar depend
を含むことが必要であり、全オブジェクトファイルを変数
.Ar OBJS
で定義することが必要です。
場合によっては、偽の
.Pa Makefile
を使えるでしょう。
.Nm
は、ソースディレクトリ
.Pa foo
中の
.Pa Makefile
を見る前に、現在のディレクトリ中の
.Pa Makefile.foo
を見ます。
.Pp .Pp
.Nm .Nm
実行後、 ``make -f <conf-name>.mk'' を実行することで 実行後、 ``make -f <conf-name>.mk'' を実行することで
@ -82,7 +104,6 @@ Makefile
しかしこのターゲットは自動的には実行されません。 しかしこのターゲットは自動的には実行されません。
リリースエンジニアリング環境では、オブジェクトを他のディレクトリで リリースエンジニアリング環境では、オブジェクトを他のディレクトリで
修正するのは一般に望ましくないからです。 修正するのは一般に望ましくないからです。
.Pp .Pp
オプションは以下の通りです: オプションは以下の通りです:
.Bl -tag -width indent .Bl -tag -width indent
@ -99,7 +120,7 @@ Makefile
.It Fl l .It Fl l
名前の表示。このバイナリが対応する名前を一覧表示します。 名前の表示。このバイナリが対応する名前を一覧表示します。
.It Fl h Ar makefile-header-name .It Fl h Ar makefile-header-name
.Nm crunchgen .Nm
が生成する Makefile の先頭に含めるファイルの名前を設定します。 が生成する Makefile の先頭に含めるファイルの名前を設定します。
make の変数を定義するのに便利です。 make の変数を定義するのに便利です。
これには、make の動作に影響を与え、環境変数を介してでは面倒である、 これには、make の動作に影響を与え、環境変数を介してでは面倒である、
@ -109,11 +130,12 @@ make
出力する Makefile の名前を 出力する Makefile の名前を
.Ar makefile-name .Ar makefile-name
とします。デフォルトの名前は ``<conf-name>.mk'' です。 とします。デフォルトの名前は ``<conf-name>.mk'' です。
.It Fl o
各プログラムの make ターゲットに対し、``make obj'' ルールを追加します。
.It Fl q .It Fl q
静粛処理モード。状況報告メッセージを抑制します。 静粛処理モード。状況報告メッセージを抑制します。
.El .El
.Sh CRUNCHGEN コンフィギュレーションファイルコマンド .Sh CRUNCHGEN コンフィギュレーションファイルコマンド
.Nm .Nm
は、クランチバイナリのコンポーネントについて記述した設定項目を は、クランチバイナリのコンポーネントについて記述した設定項目を
.Ar conf-file .Ar conf-file
@ -146,6 +168,8 @@ make
クランチバイナリのリンク時に含めるライブラリ指定のリスト。 クランチバイナリのリンク時に含めるライブラリ指定のリスト。
.Nm libs .Nm libs
行は複数あっても構いません。 行は複数あっても構いません。
.It Nm buildopts Ar buildopts ...
各 make ターゲットに追加追加される、ビルドオプションのリスト。
.It Nm ln Ar progname linkname .It Nm ln Ar progname linkname
argv[0] に argv[0] に
.Ar linkname .Ar linkname
@ -155,7 +179,6 @@ argv[0]
これにより、起動時の名前によって振る舞いを変えるようなプログラムも これにより、起動時の名前によって振る舞いを変えるようなプログラムも
正しく動作するようにできます。 正しく動作するようにできます。
.El .El
特別な状況、例えば 特別な状況、例えば
ソースファイルがないとか、 ソースファイルがないとか、
従来の Makefile によらないビルドを行うといった 従来の Makefile によらないビルドを行うといった
@ -196,6 +219,12 @@ argv[0]
自身が 自身が
.Ar objdir .Ar objdir
となります。 となります。
.It Nm special Ar progname Nm buildopts Ar buildopts
ビルドオプション集合を定義します。
.Ar progname
処理時には、
.Nm buildopts
で指定されたものに加え、これらが追加されてターゲットが作成されます。
.It Nm special Ar progname Nm objs Ar object-file-name ... .It Nm special Ar progname Nm objs Ar object-file-name ...
プログラム プログラム
.Ar progname .Ar progname
@ -225,7 +254,6 @@ argv[0]
このオプションはシンボルが衝突するときの最後の拠所ですが、 このオプションはシンボルが衝突するときの最後の拠所ですが、
シンボル解決の唯一の方法である場合もあります。 シンボル解決の唯一の方法である場合もあります。
.El .El
.Pp .Pp
実際に 実際に
.Nm .Nm
@ -242,7 +270,6 @@ argv[0]
ですから、もし可能なら、初期のパラメータを指定し、あとは ですから、もし可能なら、初期のパラメータを指定し、あとは
.Nm .Nm
に求めさせたほうが便利な場合もあります。 に求めさせたほうが便利な場合もあります。
.Pp .Pp
.Nm .Nm
が生成する makefile はオプションのターゲット が生成する makefile はオプションのターゲット
@ -264,17 +291,20 @@ argv[0]
.Dq Pa kcopy.conf .Dq Pa kcopy.conf
の内容を示します。 の内容を示します。
.Pp .Pp
.nf .Bd -literal -offset indent
srcdirs /usr/src/bin /usr/src/sbin srcdirs /usr/src/bin /usr/src/sbin
progs test cp echo sh fsck halt init mount umount myinstall progs test cp echo sh fsck halt init mount umount myinstall
ln test [ # test は [ として起動することもできる progs anotherprog
ln sh -sh # init は argv[0] を "-sh" としてシェルを起動する ln test [ # test は [ として起動することもできる
ln sh -sh # init は argv[0] を "-sh" としてシェルを起動する
special myprog objpaths /homes/leroy/src/myinstall.o # ソースなし special myprog objpaths /homes/leroy/src/myinstall.o # ソースなし
libs -lutil -lcrypt special anotherprog -DNO_FOO WITHOUT_BAR=YES
.fi
libs -lutil -lcrypt
.Ed
.Pp .Pp
このコンフィギュレーションファイルでは、 このコンフィギュレーションファイルでは、
いくつかの基本的なシステムユーティリティと いくつかの基本的なシステムユーティリティと
@ -285,15 +315,19 @@ argv[0]
.Nm special .Nm special
行で直接指定されています。 行で直接指定されています。
.Pp .Pp
さらに、``anotherprog'' 構築時には、引数
.Ar -DNO_FOO WITHOUT_BAR=YES
がすべてのビルドターゲットに対して追加されます。
.Pp
クランチバイナリ ``kcopy'' は以下のようにして作成できます: クランチバイナリ ``kcopy'' は以下のようにして作成できます:
.Pp .Pp
.nf .Bd -literal -offset indent
% crunchgen -m Makefile kcopy.conf # Makefile と kcopy.c 作成 % crunchgen -m Makefile kcopy.conf # Makefile と kcopy.c 作成
% make objs # コンポーネントプログラムの *.o 作成 % make objs # コンポーネントプログラムの *.o 作成
% make # クランチバイナリ kcopy の作成 % make # クランチバイナリ kcopy の作成
% kcopy sh # シェル sh を起動できるかどうか試すと.. % kcopy sh # シェル sh を起動できるかどうか試すと..
$ # うまくいった! $ # うまくいった!
.fi .Ed
.Pp .Pp
ここまでくれば、バイナリ ``kcopy'' をインストールフロッピにコピーし、 ここまでくれば、バイナリ ``kcopy'' をインストールフロッピにコピーし、
各コンポーネントプログラムの名前でハードリンクを設けることができます。 各コンポーネントプログラムの名前でハードリンクを設けることができます。

View file

@ -1,4 +1,4 @@
.\" %FreeBSD: src/usr.sbin/ppp/ppp.8,v 1.209.2.12 2000/10/31 02:26:18 brian Exp % .\" %FreeBSD: src/usr.sbin/ppp/ppp.8,v 1.209.2.13 2000/11/16 21:52:03 brian Exp %
.\" .\"
.\" jpman %Id: ppp.8,v 1.4 1997/06/08 18:41:58 saeki Stab % .\" jpman %Id: ppp.8,v 1.4 1997/06/08 18:41:58 saeki Stab %
.\" .\"
@ -3087,12 +3087,22 @@ NAT
それらをゲートウェイの後の特定のマシンにマップしたい場合に有用です。 それらをゲートウェイの後の特定のマシンにマップしたい場合に有用です。
.It nat deny_incoming Op yes|no .It nat deny_incoming Op yes|no
yes に設定すると、 yes に設定すると、
ファイアウォールとほぼ同様にパケットを落とすことにより、 エイリアシングリンクがまだ存在しないところでは、
このコマンドは全入力接続を拒否します。 このコマンドは全パケットを拒否します。
.Dq エイリアシングリンク
が何であるかについては、
.Xr libalias 3
.Sx 概念の背景
節を参照してください。
.Pp .Pp
このオプションを有効化すると、 どのような状況において
libalias が識別不可能な IP パケットを落とすことに注意してください。 .Xr libalias 3
これは将来修正される予定です。 がエイリアシングリンクを作成したか、気をつける必要があります。
.Dq set filter
または
.Dq nat target
のコマンドを使用して、更にネットワークを保護する必要があるかもしれません。
.It nat help|? .It nat help|?
このコマンドは、使用可能な nat コマンドのまとめを表示します。 このコマンドは、使用可能な nat コマンドのまとめを表示します。
.It nat log Op yes|no .It nat log Op yes|no