OSDN Git Service

Update to 3.11
[linuxjf/JF.git] / docs / LFS-BOOK / chapter06 / binutils.html
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">
4   <head>
5     <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
6     <title>
7       6.13. Binutils-2.22
8     </title>
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" />
13   </head>
14   <body class="lfs" id="lfs-7.2">
15     <div class="navheader">
16       <h4>
17         Linux From Scratch - Version 7.2
18       </h4>
19       <h3>
20         第6章 基本的なソフトウェアのインストール
21       </h3>
22       <ul>
23         <li class="prev">
24           <a accesskey="p" href="file.html" title="File-5.11">前のページ</a>
25           <p>
26             File-5.11
27           </p>
28         </li>
29         <li class="next">
30           <a accesskey="n" href="gmp.html" title="GMP-5.0.5">次のページ</a>
31           <p>
32             GMP-5.0.5
33           </p>
34         </li>
35         <li class="up">
36           <a accesskey="u" href="chapter06.html" title=
37           "第6章 基本的なソフトウェアのインストール">上に戻る</a>
38         </li>
39         <li class="home">
40           <a accesskey="h" href="../index.html" title=
41           "Linux From Scratch - Version 7.2">ホーム</a>
42         </li>
43       </ul>
44     </div>
45     <div class="wrap" lang="ja" xml:lang="ja">
46       <h1 class="sect1">
47         <a id="ch-system-binutils" name="ch-system-binutils"></a>6.13.
48         Binutils-2.22
49       </h1>
50       <div class="package" lang="ja" xml:lang="ja">
51         <p>
52           Binutils パッケージは、リンカーやアセンブラーなどのようにオブジェクトファイルを取り扱うツール類を提供します。
53         </p>
54         <div class="segmentedlist">
55           <div class="seglistitem">
56             <div class="seg">
57               <strong class="segtitle">概算ビルド時間:</strong> <span class=
58               "segbody">1.9 SBU</span>
59             </div>
60             <div class="seg">
61               <strong class="segtitle">必要ディスク容量:</strong> <span class=
62               "segbody">343 MB</span>
63             </div>
64           </div>
65         </div>
66       </div>
67       <div class="installation" lang="ja" xml:lang="ja">
68         <h2 class="sect2">
69           6.13.1. Binutils のインストール
70         </h2>
71         <p>
72           PTY が chroot 環境内にて正しく作動しているかどうかを確認するために、以下の簡単なテストを実行します。
73         </p>
74         <pre class="userinput">
75 <kbd class="command">expect -c "spawn ls"</kbd>
76 </pre>
77         <p>
78           上のコマンドは以下を出力するはずです。
79         </p>
80         <pre class="screen">
81 <code class="computeroutput">spawn ls</code>
82 </pre>
83         <p>
84           上のような出力ではなく、以下のような出力メッセージが含まれていたら、PTY の動作が適切に構築できていないことを示しています。
85           Binutils や GCC のテストスイートを実行する前に、この症状は解消しておく必要があります。
86         </p>
87         <pre class="screen">
88 <code class="computeroutput">The system has no more ptys.
89 Ask your system administrator to create more.</code>
90 </pre>
91         <p>
92           <code class="filename">standards.info</code>
93           ファイルの日付が古いため、インストールしないことにします。 より新しいものが Autoconf の作業を通じてインストールされます。
94         </p>
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>
98 </pre>
99         <p>
100           コンパイラーの最適化を行った場合にビルドに失敗するため、これを修正するパッチを適用します。
101         </p>
102         <pre class="userinput">
103 <kbd class="command">patch -Np1 -i ../binutils-2.22-build_fix-1.patch</kbd>
104 </pre>
105         <p>
106           Binutils のドキュメントによると Binutils
107           のビルドにあたっては、ソースディレクトリ以外の専用のビルドディレクトリを作成することが推奨されています。
108         </p>
109         <pre class="userinput">
110 <kbd class="command">mkdir -v ../binutils-build
111 cd ../binutils-build</kbd>
112 </pre>
113         <p>
114           Binutils をコンパイルするための準備をします。
115         </p>
116         <pre class="userinput">
117 <kbd class=
118 "command">../binutils-2.22/configure --prefix=/usr --enable-shared</kbd>
119 </pre>
120         <p>
121           パッケージをコンパイルします。
122         </p>
123         <pre class="userinput">
124 <kbd class="command">make tooldir=/usr</kbd>
125 </pre>
126         <div class="variablelist">
127           <p class="title">
128             <b>make パラメーターの意味:</b>
129           </p>
130           <dl>
131             <dt>
132               <span class="term"><em class=
133               "parameter"><code>tooldir=/usr</code></em></span>
134             </dt>
135             <dd>
136               <p>
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 マシン用の実行コードを生成するような場合です。)
146               </p>
147             </dd>
148           </dl>
149         </div>
150         <div class="admon important">
151           <img alt="[重要項目]" src="../images/important.png" />
152           <h3>
153             重要項目
154           </h3>
155           <p>
156             本節における Binutils のテストスイートは極めて重要なものです。 したがってどのような場合であっても必ず実行してください。
157           </p>
158         </div>
159         <p>
160           コンパイル結果をテストします。
161         </p>
162         <pre class="userinput">
163 <kbd class="command">make -k check</kbd>
164 </pre>
165         <p>
166           パッケージをインストールします。
167         </p>
168         <pre class="userinput">
169 <kbd class="command">make tooldir=/usr install</kbd>
170 </pre>
171         <p>
172           <code class="filename">libiberty</code> ヘッダーファイルをインストールします。
173           他のパッケージがこれを必要としている場合があるためです。
174         </p>
175         <pre class="userinput">
176 <kbd class=
177 "command">cp -v ../binutils-2.22/include/libiberty.h /usr/include</kbd>
178 </pre>
179       </div>
180       <div class="content" lang="ja" xml:lang="ja">
181         <h2 class="sect2">
182           <a id="contents-binutils" name="contents-binutils"></a>6.13.2.
183           Binutils の構成
184         </h2>
185         <div class="segmentedlist">
186           <div class="seglistitem">
187             <div class="seg">
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,
191               strip</span>
192             </div>
193             <div class="seg">
194               <strong class="segtitle">インストールライブラリ:</strong> <span class=
195               "segbody">libiberty.a, libbfd.{a,so}, libopcodes.{a,so}</span>
196             </div>
197             <div class="seg">
198               <strong class="segtitle">インストールディレクトリ:</strong> <span class=
199               "segbody">/usr/lib/ldscripts</span>
200             </div>
201           </div>
202         </div>
203         <div class="variablelist">
204           <h3>
205             概略説明
206           </h3>
207           <table border="0">
208             <col align="left" valign="top" />
209             <tbody>
210               <tr>
211                 <td>
212                   <p>
213                     <a id="addr2line" name="addr2line"></a><span class=
214                     "term"><span class=
215                     "command"><strong>addr2line</strong></span></span>
216                   </p>
217                 </td>
218                 <td>
219                   <p>
220                     指定された実行モジュール名とアドレスに基づいて、プログラム内のアドレスをファイル名と行番号に変換します。
221                     これは実行モジュール内のデバッグ情報を利用します。
222                     特定のアドレスがどのソースファイルと行番号に該当するかを確認するものです。
223                   </p>
224                 </td>
225               </tr>
226               <tr>
227                 <td>
228                   <p>
229                     <a id="ar" name="ar"></a><span class="term"><span class=
230                     "command"><strong>ar</strong></span></span>
231                   </p>
232                 </td>
233                 <td>
234                   <p>
235                     アーカイブの生成、修正、抽出を行います。
236                   </p>
237                 </td>
238               </tr>
239               <tr>
240                 <td>
241                   <p>
242                     <a id="as" name="as"></a><span class="term"><span class=
243                     "command"><strong>as</strong></span></span>
244                   </p>
245                 </td>
246                 <td>
247                   <p>
248                     <span class="command"><strong>gcc</strong></span>
249                     の出力結果をアセンブルして、オブジェクトファイルとして生成するアセンブラー。
250                   </p>
251                 </td>
252               </tr>
253               <tr>
254                 <td>
255                   <p>
256                     <a id="c-filt" name="c-filt"></a><span class=
257                     "term"><span class=
258                     "command"><strong>c++filt</strong></span></span>
259                   </p>
260                 </td>
261                 <td>
262                   <p>
263                     リンカーから呼び出されるもので C++ と Java のシンボルを複合 (demangle)
264                     し、オーバーロード関数が破壊されることを回避します。
265                   </p>
266                 </td>
267               </tr>
268               <tr>
269                 <td>
270                   <p>
271                     <a id="elfedit" name="elfedit"></a><span class=
272                     "term"><span class=
273                     "command"><strong>elfedit</strong></span></span>
274                   </p>
275                 </td>
276                 <td>
277                   <p>
278                     ELF ファイルの ELF ヘッダーを更新します。
279                   </p>
280                 </td>
281               </tr>
282               <tr>
283                 <td>
284                   <p>
285                     <a id="gprof" name="gprof"></a><span class=
286                     "term"><span class=
287                     "command"><strong>gprof</strong></span></span>
288                   </p>
289                 </td>
290                 <td>
291                   <p>
292                     コールグラフ (call graph) のプロファイルデータを表示します。
293                   </p>
294                 </td>
295               </tr>
296               <tr>
297                 <td>
298                   <p>
299                     <a id="ld" name="ld"></a><span class="term"><span class=
300                     "command"><strong>ld</strong></span></span>
301                   </p>
302                 </td>
303                 <td>
304                   <p>
305                     複数のオブジェクトファイルやアーカイブファイルから、一つのファイルを生成するリンカー。
306                     データの再配置やシンボル参照情報の結合を行います。
307                   </p>
308                 </td>
309               </tr>
310               <tr>
311                 <td>
312                   <p>
313                     <a id="ld.bfd" name="ld.bfd"></a><span class=
314                     "term"><span class=
315                     "command"><strong>ld.bfd</strong></span></span>
316                   </p>
317                 </td>
318                 <td>
319                   <p>
320                     <span class="command"><strong>ld</strong></span>
321                     へのハードリンク。
322                   </p>
323                 </td>
324               </tr>
325               <tr>
326                 <td>
327                   <p>
328                     <a id="nm" name="nm"></a><span class="term"><span class=
329                     "command"><strong>nm</strong></span></span>
330                   </p>
331                 </td>
332                 <td>
333                   <p>
334                     指定されたオブジェクトファイル内のシンボル情報を一覧表示します。
335                   </p>
336                 </td>
337               </tr>
338               <tr>
339                 <td>
340                   <p>
341                     <a id="objcopy" name="objcopy"></a><span class=
342                     "term"><span class=
343                     "command"><strong>objcopy</strong></span></span>
344                   </p>
345                 </td>
346                 <td>
347                   <p>
348                     オブジェクトファイルの変換を行います。
349                   </p>
350                 </td>
351               </tr>
352               <tr>
353                 <td>
354                   <p>
355                     <a id="objdump" name="objdump"></a><span class=
356                     "term"><span class=
357                     "command"><strong>objdump</strong></span></span>
358                   </p>
359                 </td>
360                 <td>
361                   <p>
362                     指定されたオブジェクトファイルの各種情報を表示します。
363                     さまざまなオプションを用いることで特定の情報表示が可能です。
364                     表示される情報は、コンパイル関連ツールを開発する際に有用なものです。
365                   </p>
366                 </td>
367               </tr>
368               <tr>
369                 <td>
370                   <p>
371                     <a id="ranlib" name="ranlib"></a><span class=
372                     "term"><span class=
373                     "command"><strong>ranlib</strong></span></span>
374                   </p>
375                 </td>
376                 <td>
377                   <p>
378                     アーカイブの内容を索引として生成し、それをアーカイブに保存します。
379                     索引は、アーカイブのメンバーによって定義されるすべてのシンボルの一覧により構成されます。
380                     アーカイブのメンバーとは再配置可能なオブジェクトファイルのことです。
381                   </p>
382                 </td>
383               </tr>
384               <tr>
385                 <td>
386                   <p>
387                     <a id="readelf" name="readelf"></a><span class=
388                     "term"><span class=
389                     "command"><strong>readelf</strong></span></span>
390                   </p>
391                 </td>
392                 <td>
393                   <p>
394                     ELF フォーマットのバイナリファイルの情報を表示します。
395                   </p>
396                 </td>
397               </tr>
398               <tr>
399                 <td>
400                   <p>
401                     <a id="size" name="size"></a><span class=
402                     "term"><span class=
403                     "command"><strong>size</strong></span></span>
404                   </p>
405                 </td>
406                 <td>
407                   <p>
408                     指定されたオブジェクトファイルのセクションサイズと合計サイズを一覧表示します。
409                   </p>
410                 </td>
411               </tr>
412               <tr>
413                 <td>
414                   <p>
415                     <a id="strings" name="strings"></a><span class=
416                     "term"><span class=
417                     "command"><strong>strings</strong></span></span>
418                   </p>
419                 </td>
420                 <td>
421                   <p>
422                     指定されたファイルに対して、印字可能な文字の並びを出力します。 文字は所定の長さ (デフォルトでは 4文字)
423                     以上のものが対象となります。
424                     オブジェクトファイルの場合デフォルトでは、初期化セクションとロードされるセクションからのみ文字列を抽出し出力します。
425                     これ以外の種類のファイルの場合は、ファイル全体が走査されます。
426                   </p>
427                 </td>
428               </tr>
429               <tr>
430                 <td>
431                   <p>
432                     <a id="strip" name="strip"></a><span class=
433                     "term"><span class=
434                     "command"><strong>strip</strong></span></span>
435                   </p>
436                 </td>
437                 <td>
438                   <p>
439                     オブジェクトファイルからデバッグシンボルを取り除きます。
440                   </p>
441                 </td>
442               </tr>
443               <tr>
444                 <td>
445                   <p>
446                     <a id="libiberty" name="libiberty"></a><span class=
447                     "term"><code class="filename">libiberty</code></span>
448                   </p>
449                 </td>
450                 <td>
451                   <p>
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>
458                   </p>
459                 </td>
460               </tr>
461               <tr>
462                 <td>
463                   <p>
464                     <a id="libbfd" name="libbfd"></a><span class=
465                     "term"><code class="filename">libbfd</code></span>
466                   </p>
467                 </td>
468                 <td>
469                   <p>
470                     バイナリファイルディスクリプター (Binary File Descriptor) ライブラリ。
471                   </p>
472                 </td>
473               </tr>
474               <tr>
475                 <td>
476                   <p>
477                     <a id="libopcodes" name="libopcodes"></a><span class=
478                     "term"><code class="filename">libopcodes</code></span>
479                   </p>
480                 </td>
481                 <td>
482                   <p>
483                     opcodes (オペレーションコード; プロセッサー命令を「<span class=
484                     "quote">認識可能なテキスト</span>」として表現したもの) を取り扱うライブラリ。 このライブラリは
485                     <span class="command"><strong>objdump</strong></span>
486                     などのように、ビルド作業にて利用するユーティリティプログラムが利用しています。
487                   </p>
488                 </td>
489               </tr>
490             </tbody>
491           </table>
492         </div>
493       </div>
494     </div>
495     <div class="navfooter">
496       <ul>
497         <li class="prev">
498           <a accesskey="p" href="file.html" title="File-5.11">前のページ</a>
499           <p>
500             File-5.11
501           </p>
502         </li>
503         <li class="next">
504           <a accesskey="n" href="gmp.html" title="GMP-5.0.5">次のページ</a>
505           <p>
506             GMP-5.0.5
507           </p>
508         </li>
509         <li class="up">
510           <a accesskey="u" href="chapter06.html" title=
511           "第6章 基本的なソフトウェアのインストール">上に戻る</a>
512         </li>
513         <li class="home">
514           <a accesskey="h" href="../index.html" title=
515           "Linux From Scratch - Version 7.2">ホーム</a>
516         </li>
517       </ul>
518     </div>
519   </body>
520 </html>