1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
5 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
9 <link rel="stylesheet" href="../stylesheets/lfs.css" type="text/css" />
10 <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
11 <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
12 "text/css" media="print" />
14 <body class="lfs" id="lfs-7.2">
15 <div class="navheader">
17 Linux From Scratch - Version 7.2
24 <a accesskey="p" href="file.html" title="File-5.11">前のページ</a>
30 <a accesskey="n" href="gmp.html" title="GMP-5.0.5">次のページ</a>
36 <a accesskey="u" href="chapter06.html" title=
37 "第6章 基本的なソフトウェアのインストール">上に戻る</a>
40 <a accesskey="h" href="../index.html" title=
41 "Linux From Scratch - Version 7.2">ホーム</a>
45 <div class="wrap" lang="ja" xml:lang="ja">
47 <a id="ch-system-binutils" name="ch-system-binutils"></a>6.13.
50 <div class="package" lang="ja" xml:lang="ja">
52 Binutils パッケージは、リンカーやアセンブラーなどのようにオブジェクトファイルを取り扱うツール類を提供します。
54 <div class="segmentedlist">
55 <div class="seglistitem">
57 <strong class="segtitle">概算ビルド時間:</strong> <span class=
58 "segbody">1.9 SBU</span>
61 <strong class="segtitle">必要ディスク容量:</strong> <span class=
62 "segbody">343 MB</span>
67 <div class="installation" lang="ja" xml:lang="ja">
69 6.13.1. Binutils のインストール
72 PTY が chroot 環境内にて正しく作動しているかどうかを確認するために、以下の簡単なテストを実行します。
74 <pre class="userinput">
75 <kbd class="command">expect -c "spawn ls"</kbd>
81 <code class="computeroutput">spawn ls</code>
84 上のような出力ではなく、以下のような出力メッセージが含まれていたら、PTY の動作が適切に構築できていないことを示しています。
85 Binutils や GCC のテストスイートを実行する前に、この症状は解消しておく必要があります。
88 <code class="computeroutput">The system has no more ptys.
89 Ask your system administrator to create more.</code>
92 <code class="filename">standards.info</code>
93 ファイルの日付が古いため、インストールしないことにします。 より新しいものが Autoconf の作業を通じてインストールされます。
95 <pre class="userinput">
96 <kbd class="command">rm -fv etc/standards.info
97 sed -i.bak '/^INFO/s/standards.info //' etc/Makefile.in</kbd>
100 コンパイラーの最適化を行った場合にビルドに失敗するため、これを修正するパッチを適用します。
102 <pre class="userinput">
103 <kbd class="command">patch -Np1 -i ../binutils-2.22-build_fix-1.patch</kbd>
106 Binutils のドキュメントによると Binutils
107 のビルドにあたっては、ソースディレクトリ以外の専用のビルドディレクトリを作成することが推奨されています。
109 <pre class="userinput">
110 <kbd class="command">mkdir -v ../binutils-build
111 cd ../binutils-build</kbd>
114 Binutils をコンパイルするための準備をします。
116 <pre class="userinput">
118 "command">../binutils-2.22/configure --prefix=/usr --enable-shared</kbd>
123 <pre class="userinput">
124 <kbd class="command">make tooldir=/usr</kbd>
126 <div class="variablelist">
128 <b>make パラメーターの意味:</b>
132 <span class="term"><em class=
133 "parameter"><code>tooldir=/usr</code></em></span>
137 通常 tooldir (実行ファイルが最終的に配置されるディレクトリ) は <code class=
138 "filename">$(exec_prefix)/$(target_alias)</code> に設定されています。
139 x86_64 マシンでは <code class=
140 "filename">/usr/x86_64-unknown-linux-gnu</code> となります。 LFS
141 は自分で設定を定めていくシステムですから <code class="filename">/usr</code>
142 ディレクトリ配下に CPU ターゲットを特定するディレクトリを設ける必要がありません。 <code class=
143 "filename">$(exec_prefix)/$(target_alias)</code>
144 というディレクトリ構成は、クロスコンパイル環境において必要となるものです。 (例えばパッケージをコンパイルするマシンが
145 Intel であり、そこから PowerPC マシン用の実行コードを生成するような場合です。)
150 <div class="admon important">
151 <img alt="[重要項目]" src="../images/important.png" />
156 本節における Binutils のテストスイートは極めて重要なものです。 したがってどのような場合であっても必ず実行してください。
162 <pre class="userinput">
163 <kbd class="command">make -k check</kbd>
168 <pre class="userinput">
169 <kbd class="command">make tooldir=/usr install</kbd>
172 <code class="filename">libiberty</code> ヘッダーファイルをインストールします。
173 他のパッケージがこれを必要としている場合があるためです。
175 <pre class="userinput">
177 "command">cp -v ../binutils-2.22/include/libiberty.h /usr/include</kbd>
180 <div class="content" lang="ja" xml:lang="ja">
182 <a id="contents-binutils" name="contents-binutils"></a>6.13.2.
185 <div class="segmentedlist">
186 <div class="seglistitem">
188 <strong class="segtitle">インストールプログラム:</strong> <span class=
189 "segbody">addr2line, ar, as, c++filt, elfedit, gprof, ld,
190 ld.bfd, nm, objcopy, objdump, ranlib, readelf, size, strings,
194 <strong class="segtitle">インストールライブラリ:</strong> <span class=
195 "segbody">libiberty.a, libbfd.{a,so}, libopcodes.{a,so}</span>
198 <strong class="segtitle">インストールディレクトリ:</strong> <span class=
199 "segbody">/usr/lib/ldscripts</span>
203 <div class="variablelist">
208 <col align="left" valign="top" />
213 <a id="addr2line" name="addr2line"></a><span class=
215 "command"><strong>addr2line</strong></span></span>
220 指定された実行モジュール名とアドレスに基づいて、プログラム内のアドレスをファイル名と行番号に変換します。
221 これは実行モジュール内のデバッグ情報を利用します。
222 特定のアドレスがどのソースファイルと行番号に該当するかを確認するものです。
229 <a id="ar" name="ar"></a><span class="term"><span class=
230 "command"><strong>ar</strong></span></span>
242 <a id="as" name="as"></a><span class="term"><span class=
243 "command"><strong>as</strong></span></span>
248 <span class="command"><strong>gcc</strong></span>
249 の出力結果をアセンブルして、オブジェクトファイルとして生成するアセンブラー。
256 <a id="c-filt" name="c-filt"></a><span class=
258 "command"><strong>c++filt</strong></span></span>
263 リンカーから呼び出されるもので C++ と Java のシンボルを複合 (demangle)
264 し、オーバーロード関数が破壊されることを回避します。
271 <a id="elfedit" name="elfedit"></a><span class=
273 "command"><strong>elfedit</strong></span></span>
278 ELF ファイルの ELF ヘッダーを更新します。
285 <a id="gprof" name="gprof"></a><span class=
287 "command"><strong>gprof</strong></span></span>
292 コールグラフ (call graph) のプロファイルデータを表示します。
299 <a id="ld" name="ld"></a><span class="term"><span class=
300 "command"><strong>ld</strong></span></span>
305 複数のオブジェクトファイルやアーカイブファイルから、一つのファイルを生成するリンカー。
306 データの再配置やシンボル参照情報の結合を行います。
313 <a id="ld.bfd" name="ld.bfd"></a><span class=
315 "command"><strong>ld.bfd</strong></span></span>
320 <span class="command"><strong>ld</strong></span>
328 <a id="nm" name="nm"></a><span class="term"><span class=
329 "command"><strong>nm</strong></span></span>
334 指定されたオブジェクトファイル内のシンボル情報を一覧表示します。
341 <a id="objcopy" name="objcopy"></a><span class=
343 "command"><strong>objcopy</strong></span></span>
355 <a id="objdump" name="objdump"></a><span class=
357 "command"><strong>objdump</strong></span></span>
362 指定されたオブジェクトファイルの各種情報を表示します。
363 さまざまなオプションを用いることで特定の情報表示が可能です。
364 表示される情報は、コンパイル関連ツールを開発する際に有用なものです。
371 <a id="ranlib" name="ranlib"></a><span class=
373 "command"><strong>ranlib</strong></span></span>
378 アーカイブの内容を索引として生成し、それをアーカイブに保存します。
379 索引は、アーカイブのメンバーによって定義されるすべてのシンボルの一覧により構成されます。
380 アーカイブのメンバーとは再配置可能なオブジェクトファイルのことです。
387 <a id="readelf" name="readelf"></a><span class=
389 "command"><strong>readelf</strong></span></span>
394 ELF フォーマットのバイナリファイルの情報を表示します。
401 <a id="size" name="size"></a><span class=
403 "command"><strong>size</strong></span></span>
408 指定されたオブジェクトファイルのセクションサイズと合計サイズを一覧表示します。
415 <a id="strings" name="strings"></a><span class=
417 "command"><strong>strings</strong></span></span>
422 指定されたファイルに対して、印字可能な文字の並びを出力します。 文字は所定の長さ (デフォルトでは 4文字)
424 オブジェクトファイルの場合デフォルトでは、初期化セクションとロードされるセクションからのみ文字列を抽出し出力します。
425 これ以外の種類のファイルの場合は、ファイル全体が走査されます。
432 <a id="strip" name="strip"></a><span class=
434 "command"><strong>strip</strong></span></span>
439 オブジェクトファイルからデバッグシンボルを取り除きます。
446 <a id="libiberty" name="libiberty"></a><span class=
447 "term"><code class="filename">libiberty</code></span>
452 以下に示すような数多くの GNU プログラムが利用する処理ルーチンを提供します。 <span class=
453 "command"><strong>getopt</strong></span>、 <span class=
454 "command"><strong>obstack</strong></span>、 <span class=
455 "command"><strong>strerror</strong></span>、 <span class=
456 "command"><strong>strtol</strong></span>、 <span class=
457 "command"><strong>strtoul</strong></span>
464 <a id="libbfd" name="libbfd"></a><span class=
465 "term"><code class="filename">libbfd</code></span>
470 バイナリファイルディスクリプター (Binary File Descriptor) ライブラリ。
477 <a id="libopcodes" name="libopcodes"></a><span class=
478 "term"><code class="filename">libopcodes</code></span>
483 opcodes (オペレーションコード; プロセッサー命令を「<span class=
484 "quote">認識可能なテキスト</span>」として表現したもの) を取り扱うライブラリ。 このライブラリは
485 <span class="command"><strong>objdump</strong></span>
486 などのように、ビルド作業にて利用するユーティリティプログラムが利用しています。
495 <div class="navfooter">
498 <a accesskey="p" href="file.html" title="File-5.11">前のページ</a>
504 <a accesskey="n" href="gmp.html" title="GMP-5.0.5">次のページ</a>
510 <a accesskey="u" href="chapter06.html" title=
511 "第6章 基本的なソフトウェアのインストール">上に戻る</a>
514 <a accesskey="h" href="../index.html" title=
515 "Linux From Scratch - Version 7.2">ホーム</a>