Merge the following changes in the English version:
porting.sgml : 1.109 -> 1.111 Submitted by: Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp> Yoshiaki Uchikawa <yoshiaki@kt.rim.or.jp>
This commit is contained in:
parent
a65ddc1a9c
commit
add582d295
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=3573
1 changed files with 130 additions and 2 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- $Id: porting.sgml,v 1.46 1998-08-24 16:04:34 motoyuki Exp $ -->
|
<!-- $Id: porting.sgml,v 1.47 1998-10-05 15:33:28 motoyuki Exp $ -->
|
||||||
<!-- The FreeBSD Japanese Documentation Project -->
|
<!-- The FreeBSD Japanese Documentation Project -->
|
||||||
<!-- Original revision: 1.109 -->
|
<!-- Original revision: 1.111 -->
|
||||||
|
|
||||||
<sect1><heading>フリーソフトウェアの移植<label id="porting"></heading>
|
<sect1><heading>フリーソフトウェアの移植<label id="porting"></heading>
|
||||||
|
|
||||||
|
|
@ -907,6 +907,134 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2
|
||||||
れます. したがって前に `<tt>-L</tt>' や `<tt>-l</tt>' をつけ
|
れます. したがって前に `<tt>-L</tt>' や `<tt>-l</tt>' をつけ
|
||||||
る必要はありません.
|
る必要はありません.
|
||||||
|
|
||||||
|
<sect2>
|
||||||
|
<heading>ELF 対応</heading>
|
||||||
|
|
||||||
|
<p>FreeBSD は 3.0-release 以後, ELF に移行しますので,
|
||||||
|
シェアードライブラリを作成するたくさんの port を ELF 対応
|
||||||
|
にする必要があります. 3.0 システムは ELF も a.out も
|
||||||
|
実行できますし, 2.2 ブランチからのもう一つのリリース (2.2.8)
|
||||||
|
もあるので, 複雑な状況です. 以下は a.out のみに対応している
|
||||||
|
port をどのように a.out と ELF 両方に対応させるかのガイドライ
|
||||||
|
ンです.
|
||||||
|
|
||||||
|
<p>このリストの一部は, 移行時にしかあてはまらないものもあります
|
||||||
|
が, 古い port をアップグレードしたい場合に参考になるように,
|
||||||
|
しばらくのあいだは残しておきます.
|
||||||
|
|
||||||
|
<sect3>
|
||||||
|
<heading>a.out ライブラリの待避</heading>
|
||||||
|
|
||||||
|
<p>a.out ライブラリは, <tt>/usr/local/lib</tt> から,
|
||||||
|
`<tt/aout/' サブディレクトリ に移動しなくはなりません.
|
||||||
|
(もし移動しないと, ELF ports がそれらをあっさり上書きして
|
||||||
|
しまいます.) current の <tt>src/Makefile</tt> にある
|
||||||
|
`<tt/move-aout-libs/' ターゲット (`<tt/aout-to-elf'/ から呼ば
|
||||||
|
れます) がその移動をしてくれます. a.out ライブラリを
|
||||||
|
移動するだけなので, ELF と a.out の両方のライブラリが標準的な
|
||||||
|
ディレクトリにあるシステムでは, このターゲットを実行しても安全
|
||||||
|
です.
|
||||||
|
|
||||||
|
<sect3>
|
||||||
|
<heading>フォーマット</heading>
|
||||||
|
|
||||||
|
<p>port ツリーは package をそのマシンのフォーマットで作成しま
|
||||||
|
す. つまり, 2.2 では a.out, また 3.0 では
|
||||||
|
<tt>`objformat`</tt> の結果によって, a.out か ELF になります.
|
||||||
|
また, いったん a.out ライブラリをサブディレクトリに移動すると
|
||||||
|
a.out ライブラリの作成はサポートされません. (つまり, あなたがな
|
||||||
|
にをすれば良いのかを理解しているのならば, うまく作成できるかもし
|
||||||
|
れませんが, 自力でやらなければならないということです)
|
||||||
|
|
||||||
|
<sect3>
|
||||||
|
<heading>PORTOBJFORMAT</heading>
|
||||||
|
|
||||||
|
<p><tt/bsd.port.mk/ において <tt/PORTOBJFORMAT/ は
|
||||||
|
`<tt/aout/' か `<tt/elf/' に設定され, 環境変数
|
||||||
|
<tt/CONFIGURE_ENV/, <tt/SCRIPTS_ENV/, <tt/MAKE_ENV/
|
||||||
|
の中で export されます. (-stableでは常に `<tt/aout/' になり
|
||||||
|
ます). また, `<tt>PORTOBJFORMAT=${PORTOBJFORMAT}</tt>' とし
|
||||||
|
て <tt/PLIST_SUB/ に渡されます. (以下にある <tt/ldconfig/ に
|
||||||
|
関するコメントを参照して下さい.)
|
||||||
|
|
||||||
|
<p>この変数は, 以下のようにして <tt/bsd.port.mk/ 中で設定され
|
||||||
|
ます.
|
||||||
|
<tscreen><verb>
|
||||||
|
PORTOBJFORMAT!= test -x /usr/bin/objformat && /usr/bin/objformat ||
|
||||||
|
echo aout
|
||||||
|
</verb></tscreen>
|
||||||
|
|
||||||
|
<p>この変数を使って, port の make の過程で何をすべきかを決定す
|
||||||
|
べきですが, もし port の <tt/configure/ スクリプトが元々, ELF
|
||||||
|
システムを自動的に検出するのであれば, <tt/PORTOBJFORMAT/ を
|
||||||
|
参照する必要はありません.
|
||||||
|
|
||||||
|
<sect3>
|
||||||
|
<heading>共有ライブラリの作成</heading>
|
||||||
|
|
||||||
|
<p>以下は, a.out と ELF での共有ライブラリの扱いの違いです.
|
||||||
|
|
||||||
|
<descrip>
|
||||||
|
<tag>共有ライブラリのバージョン</tag>ELF の共有ライブラリ
|
||||||
|
は, "<tt/libfoo.so.M/" という名前になっていなければなりませ
|
||||||
|
ん. ここで <tt/M/ は単一のバージョン番号を表します. 一方
|
||||||
|
a.out のライブラリは "<tt/libfoo.so.M.N/" という名前で,
|
||||||
|
<tt/M/ はメジャーバージョン番号, <tt/N/ はマイナーバージョン
|
||||||
|
番号になっている必要があります. これらを混同しないでください.
|
||||||
|
"<tt/libfoo.so.N.M/" という名のELF 共有ライブラリや
|
||||||
|
"<tt/libfoo.so.N/" という名の a.out 共有ライブラリ(あるいは
|
||||||
|
シンボリックリンク) は <em/絶対にinstallしないでください/.
|
||||||
|
|
||||||
|
<tag>リンカコマンドライン</tag>直接 '<tt/ld/' を使用せずに,
|
||||||
|
'<tt>cc -shared</tt>' を使用してください. たった一つの違いは,
|
||||||
|
ELF には, `<tt>-Wl,-soname,libfoo.so.M</tt>' コマンドライ
|
||||||
|
ンにを加える必要があることです.
|
||||||
|
</descrip>
|
||||||
|
|
||||||
|
<p>ELF のリンカを満足させるためには, <tt>libfoo.so</tt> ->
|
||||||
|
<tt>libfoo.so.N</tt> というシンボリックリンクを作る必要があり
|
||||||
|
ます. これは, <tt/PLIST/ にも加えなくてはいけませんし, a.out
|
||||||
|
の場合でも害にはならないので (一部の port ではダイナミックリ
|
||||||
|
ンクローディングのために必要でもあります),
|
||||||
|
<tt/PORTOBJFORMAT/ の設定を気にせずに, ただ単純にリンクを作
|
||||||
|
成してください.
|
||||||
|
|
||||||
|
<sect3>
|
||||||
|
<heading><tt/LIB_DEPENDS/</heading>
|
||||||
|
|
||||||
|
<p>すべての port の Makefile を編集して, <tt/LIB_DEPENDS/
|
||||||
|
からマイナー番号を除去する必要があり, 正規表現のサポートも
|
||||||
|
除去する必要があります. (例えば,
|
||||||
|
`<tt>foo\\.1\\.\\(33|40\\)</tt>' -> `<tt>foo.2</tt>'.)
|
||||||
|
マッチングは `<tt>grep -wF</tt>' 使って行われます.
|
||||||
|
|
||||||
|
<sect3>
|
||||||
|
<heading><tt/PLIST/</heading>
|
||||||
|
|
||||||
|
<p><tt/PLIST/ は, a.out のマイナー番号が0であれば, 短い (ELFの)
|
||||||
|
共有ライブラリの名前を含み, さもなくば長い (a.outの) 名前を
|
||||||
|
含んでいる必要があります. <tt/bsd.port.mk/ は 自動的に,
|
||||||
|
<tt/PORTOBJFORMAT/ が <tt/aout/ であれば,
|
||||||
|
`<tt/.0/' を 短い共有ライブラリの名前の行に付け加え,
|
||||||
|
<tt/PORTOBJFORMAT/ が <tt/elf/ であれば, マイナー番号を
|
||||||
|
長い共有ライブラリの名前から削除します.
|
||||||
|
|
||||||
|
<sect3>
|
||||||
|
<heading><tt/ldconfig/</heading>
|
||||||
|
|
||||||
|
<p>Makefile 中の <tt/ldconfig/ の行は以下のようになります.
|
||||||
|
<tscreen><verb>
|
||||||
|
${SETENV} OBJFORMAT=${PORTOBJFORMAT} ${LDCONFIG} -m ....
|
||||||
|
</verb></tscreen>
|
||||||
|
また <tt/PLIST/ 中では:
|
||||||
|
<tscreen><verb>
|
||||||
|
@exec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -m ...
|
||||||
|
@unexec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -R
|
||||||
|
</verb></tscreen>
|
||||||
|
となります. これは, システムのデフォルトフォーマットではなく
|
||||||
|
パッケージのフォーマットに応じて, 正しい
|
||||||
|
<tt/ldconfig/ が呼ばれることを保証するためのものです.
|
||||||
|
|
||||||
<sect2>
|
<sect2>
|
||||||
<heading>Info ファイル</heading>
|
<heading>Info ファイル</heading>
|
||||||
<p>新しい版の texinfo(2.2.2-RELEASE およびそれ以降に入っています)
|
<p>新しい版の texinfo(2.2.2-RELEASE およびそれ以降に入っています)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue