240 lines
8.8 KiB
XML
240 lines
8.8 KiB
XML
<?xml version="1.0" encoding="koi8-r" standalone="no"?>
|
||
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN"
|
||
"../../../share/xml/freebsd42.dtd" [
|
||
<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//RU" "../../share/xml/entities.ent">
|
||
%entities;
|
||
]>
|
||
|
||
<!--
|
||
The FreeBSD Russian Documentation Project
|
||
$FreeBSD$
|
||
Original revision: r34679
|
||
-->
|
||
|
||
<!-- ðÅÒÅ×ÏÄ: ëÏÒÅÎËÏ ôÁÒÁÓ -->
|
||
|
||
<article lang="ru">
|
||
<articleinfo>
|
||
<title>éÓÐÏÌØÚÏ×ÁÎÉÅ ÂÏÌÅÅ ÎÏ×ÙÈ ×ÅÒÓÉÊ <application>GCC</application>
|
||
É <application>binutils</application> c ËÏÌÌÅËÃÉÅÊ ÐÏÒÔÏ×
|
||
&os;</title>
|
||
|
||
<author>
|
||
<firstname>Martin</firstname>
|
||
<surname>Matuska</surname>
|
||
<affiliation>
|
||
<address><email>mm@FreeBSD.org</email></address>
|
||
</affiliation>
|
||
</author>
|
||
|
||
<legalnotice id="trademarks" role="trademarks">
|
||
&tm-attrib.freebsd;
|
||
&tm-attrib.general;
|
||
</legalnotice>
|
||
|
||
<copyright>
|
||
<year>2009</year>
|
||
<holder>The &os; Documentation Project</holder>
|
||
</copyright>
|
||
|
||
<pubdate>$FreeBSD$</pubdate>
|
||
|
||
<releaseinfo>$FreeBSD$</releaseinfo>
|
||
|
||
<abstract>
|
||
<para>÷ ÜÔÏÊ ÓÔÁÔØÅ ÏÐÉÓÁÎÏ, ËÁË ÉÓÐÏÌØÚÏ×ÁÔØ ÂÏÌÅÅ ÎÏ×ÙÅ ×ÅÒÓÉÉ
|
||
ËÏÍÐÉÌÑÔÏÒÏ× <application>GCC</application> É ÎÁÂÏÒÁ ÕÔÉÌÉÔ
|
||
<application>binutils</application> ÉÚ ËÏÌÌÅËÃÉÉ ÐÏÒÔÏ× &os;.
|
||
úÄÅÓØ ÔÁËÖÅ ÏÂÓÕÖÄÁÀÔÓÑ ÓÐÅÃÉÁÌÉÚÉÒÏ×ÁÎÎÙÅ ËÏÎÆÉÇÕÒÁÃÉÉ
|
||
<application>GCC</application>.</para>
|
||
</abstract>
|
||
</articleinfo>
|
||
|
||
<sect1 id="intro">
|
||
<title>ðÒÅÄÉÓÌÏ×ÉÅ</title>
|
||
|
||
<para>ëÏÍÐÉÌÑÔÏÒ, ÐÏÓÔÁ×ÌÑÅÍÙÊ Ó &os; 8.0, — ÜÔÏ
|
||
<application>GCC</application> ×ÅÒÓÉÉ 4.2.1. ÷ ÂÁÚÏ×ÕÀ ÓÉÓÔÅÍÕ
|
||
&os; ×ËÌÀÞÅÎÙ <application>binutils</application> ×ÅÒÓÉÉ
|
||
2.15. üÔÏ ÄÏ×ÏÌØÎÏ-ÔÁËÉ ÓÔÁÒÙÅ ×ÅÒÓÉÉ, É × ÎÉÈ, ÍÅÖÄÕ ÐÒÏÞÉÍ,
|
||
ÏÔÓÕÔÓÔ×ÕÅÔ ÐÏÄÄÅÒÖËÁ ÎÏ×ÙÈ ÉÎÓÔÒÕËÃÉÊ <acronym>CPU</acronym>, ÔÁËÉÈ
|
||
ËÁË <acronym>SSSE3</acronym>, <acronym>SSE4.1</acronym>,
|
||
<acronym>SSE4.2</acronym> É Ô.Ð. ÷×ÉÄÕ ÌÉÃÅÎÚÉÏÎÎÙÈ ÏÇÒÁÎÉÞÅÎÉÊ,
|
||
ÎÏ×ÙÅ ×ÅÒÓÉÉ ÜÔÉÈ ÐÒÉÌÏÖÅÎÉÊ ÎÅ ÂÕÄÕÔ ×ËÌÀÞÅÎÙ × ÂÁÚÏ×ÕÀ ÓÉÓÔÅÍÕ.
|
||
ë ÓÞÁÓÔØÀ, ÅÓÔØ ×ÏÚÍÏÖÎÏÓÔØ ÉÓÐÏÌØÚÏ×ÁÔØ ÂÏÌÅÅ ÎÏ×ÕÀ ×ÅÒÓÉÀ ËÏÍÐÉÌÑÔÏÒÁ
|
||
<application>GCC</application> (ÎÁÐÒÉÍÅÒ, ×ÅÒÓÉÀ 4.4)
|
||
ÕÓÔÁÎÏ×É× ÅÇÏ ÉÚ ËÏÌÌÅËÃÉÉ ÐÏÒÔÏ× &os;.</para>
|
||
</sect1>
|
||
|
||
<sect1 id="prerequisites">
|
||
<title>ðÏÄÇÏÔÏ×ËÁ</title>
|
||
|
||
<sect2 id="installing-binutils">
|
||
<title>õÓÔÁÎÏ×ËÁ binutils ÉÚ ÐÏÒÔÏ×</title>
|
||
|
||
<para>þÔÏÂÙ ÚÁÄÅÊÓÔ×Ï×ÁÔØ ×ÓÅ ÎÏ×ÙÅ ÆÕÎËÃÉÏÎÁÌØÎÙÅ ×ÏÚÍÏÖÎÏÓÔÉ
|
||
ÐÏÓÌÅÄÎÅÊ ×ÅÒÓÉÉ <application>GCC</application>, ÖÅÌÁÔÅÌØÎÁ ÕÓÔÁÎÏ×ËÁ
|
||
ÎÁÉÂÏÌÅÅ ÎÏ×ÏÊ ×ÅÒÓÉÉ <application>binutils</application>. üÔÏ
|
||
ÎÅ Ñ×ÌÑÅÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍ, ÎÏ ÂÅÚ ÏÂÎÏ×ÌÅÎÉÑ
|
||
<application>binutils</application> ×Ù ÎÅ ÐÏÌÕÞÉÔÅ ÐÏÄÄÅÒÖËÕ
|
||
ÎÏ×ÙÈ ÉÎÓÔÒÕËÃÉÊ <acronym>CPU</acronym>.</para>
|
||
|
||
<para>äÌÑ ÔÏÇÏ, ÞÔÏ ÕÓÔÁÎÏ×ÉÔØ ÎÁÉÂÏÌÅÅ ÎÏ×ÕÀ ×ÅÒÓÉÀ
|
||
<application>binutils</application> ÉÓÐÏÌØÚÕÑ ËÏÌÌÅËÃÉÀ ÐÏÒÔÏ×
|
||
&os;, ×ÙÐÏÌÎÉÔÅ ÓÌÅÄÕÀÝÕÀ ËÏÍÁÎÄÕ:</para>
|
||
|
||
<screen>&prompt.root; <userinput>cd /usr/ports/devel/binutils && make install</userinput></screen>
|
||
</sect2>
|
||
|
||
<sect2 id="installing-gcc">
|
||
<title>õÓÔÁÎÏ×ËÁ GCC ÉÚ ÐÏÒÔÏ×</title>
|
||
|
||
<para>
|
||
÷ ËÏÌÌÅËÃÉÉ ÐÏÒÔÏ× &os; ÍÏÖÎÏ ÎÁÊÔÉ ÎÅÓËÏÌØËÏ ÎÏ×ÙÈ ×ÅÒÓÉÊ
|
||
<application>GCC</application>. ÷ ÎÁÛÅÍ ÐÒÉÍÅÒÅ ÍÙ ÕÓÔÁÎÁ×ÌÉ×ÁÅÍ
|
||
ÓÔÁÂÉÌØÎÕÀ ×ÅÒÓÉÀ 4.4. ïÄÎÁËÏ, ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÐÒÅÄÙÄÕÝÕÀ
|
||
ÉÌÉ ÂÏÌÅÅ ÎÏ×ÕÀ (ÒÁÚ×É×ÁÀÝÕÀÓÑ) ×ÅÒÓÉÀ (ÎÁÐÒÉÍÅÒ:
|
||
<filename role="package">lang/gcc43</filename> ÉÌÉ
|
||
<filename role="package">lang/gcc45</filename>).</para>
|
||
|
||
<para>äÌÑ ÕÓÔÁÎÏ×ËÉ ÏÄÎÏÇÏ ÉÚ ×ÙÛÅÕÐÏÍÑÎÕÔÙÈ ÐÏÒÔÏ×
|
||
<application>GCC</application>, ÎÁÂÅÒÉÔÅ ÓÌÅÄÕÀÝÕÀ ËÏÍÁÎÄÕ:</para>
|
||
|
||
<screen>&prompt.root; <userinput>cd /usr/ports/lang/<replaceable>gcc44</replaceable> && make install</userinput></screen>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="configuring-ports-gcc">
|
||
<title>îÁÓÔÒÏÊËÁ ÐÏÒÔÏ× ÎÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÔÒÅÂÕÅÍÏÊ
|
||
×ÅÒÓÉÉ <application>GCC</application></title>
|
||
|
||
<para>äÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÔÒÅÂÕÅÍÏÊ ×ÅÒÓÉÉ <application>GCC</application>,
|
||
ÕÓÔÁÎÏ×ÌÅÎÎÏÊ ÉÚ ËÏÌÌÅËÃÉÉ ÐÏÒÔÏ× &os, ÔÒÅÂÕÅÔÓÑ ÄÏÐÏÌÎÉÔÅÌØÎÁÑ
|
||
ËÏÎÆÉÇÕÒÁÃÉÑ ÓÉÓÔÅÍÙ.</para>
|
||
|
||
<sect2 id="adjusting-make.conf">
|
||
<title>éÚÍÅÎÅÎÉÑ × <filename>make.conf</filename></title>
|
||
|
||
<para>äÏÂÁרÔÅ ÓÌÅÄÕÀÝÉÅ ÓÔÒÏËÉ × <filename>/etc/make.conf</filename>
|
||
(ÉÌÉ ÉÓÐÒÁרÔÅ ÓÕÝÅÓÔ×ÕÀÝÉÅ):</para>
|
||
|
||
<programlisting>.if !empty(.CURDIR:M/usr/ports/*) && exists(/usr/local/bin/gcc44)
|
||
CC=gcc44
|
||
CXX=g++44
|
||
CPP=cpp44
|
||
.endif</programlisting>
|
||
|
||
<para>÷ ËÁÞÅÓÔ×Å ÁÌØÔÅÒÎÁÔÉ×Ù, ÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ×ÒÕÞÎÕÀ ÐÅÒÅÍÅÎÎÙÅ
|
||
ÏËÒÕÖÅÎÉÑ <envar>${CC}</envar> É <envar>${CPP}</envar>.</para>
|
||
|
||
<note>
|
||
<para>ðÒÉÍÅÒÙ, ÐÒÉ×ÅÄ£ÎÎÙÅ ×ÙÛÅ, ÓÄÅÌÁÎÙ ÄÌÑ
|
||
<application>GCC</application> ×ÅÒÓÉÉ 4.4. äÌÑ ÔÏÇÏ, ÞÔÏÂÙ
|
||
ÉÓÐÏÌØÚÏ×ÁÔØ <command>gcc43</command>, ÚÁÍÅÎÉÔÅ
|
||
<literal>"gcc44"</literal> ÎÁ <literal>"gcc43"</literal> É
|
||
<literal>"4.4"</literal> ÎÁ <literal>"4.3"</literal>
|
||
É Ô.Ð.</para>
|
||
</note>
|
||
</sect2>
|
||
|
||
<sect2 id="adjusting-libmap.conf">
|
||
<title>éÓÐÒÁ×ÌÅÎÉÑ × <filename>libmap.conf</filename></title>
|
||
|
||
<para>íÎÏÇÉÅ ÕÓÔÁÎÏ×ÌÅÎÎÙÅ ÉÚ ÐÏÒÔÏ× ÐÒÉÌÏÖÅÎÉÑ É ÂÉÂÌÉÏÔÅËÉ
|
||
ÓËÏÍÐÏÎÏ×ÁÎÙ Ó libgcc_s ÉÌÉ libstdc++. ÷ ÂÁÚÏ×ÕÀ ÓÉÓÔÅÍÕ ÕÖÅ
|
||
×ËÌÀÞÅÎÙ ÜÔÉ ÂÉÂÌÉÏÔÅËÉ, ÎÏ ÏÔ ÂÏÌÅÅ ÓÔÁÒÏÊ ×ÅÒÓÉÉ
|
||
<application>GCC</application> (×ÅÒÓÉÉ 4.2.1). þÔÏÂÙ ÐÒÅÄÏÓÔÁ×ÉÔØ
|
||
rltd (É ldd) ÐÒÁ×ÉÌØÎÙÅ ×ÅÒÓÉÉ, ÄÏÂÁרÔÅ ÓÌÅÄÕÀÝÉÅ ÚÁÐÉÓÉ Ë
|
||
<filename>/etc/libmap.conf</filename> (ÉÌÉ ÉÚÍÅÎÉÔÅ
|
||
ÓÕÝÅÓÔ×ÕÀÝÉÅ):</para>
|
||
|
||
<programlisting>libgcc_s.so.1 gcc44/libgcc_s.so.1
|
||
libgomp.so.1 gcc44/libgomp.so.1
|
||
libobjc.so.3 gcc44/libobjc.so.2
|
||
libssp.so.0 gcc44/libssp.so.0
|
||
libstdc++.so.6 gcc44/libstdc++.so.6</programlisting>
|
||
|
||
<note>
|
||
<para>ðÒÉÍÅÒ ×ÙÛÅ ÐÒÉ×ÅÄÅÎ ÄÌÑ <application>GCC</application>
|
||
×ÅÒÓÉÉ 4.4. åÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ <command>gcc43</command>,
|
||
ÚÁÍÅÎÉÔÅ <literal>"gcc44"</literal> ÎÁ <literal>"gcc43"</literal>
|
||
É Ô.Ä. óÌÅÄÕÅÔ ÏÔÍÅÔÉÔØ, ÞÔÏ ×ÓÅ ×ÙÛÅÕÐÏÍÑÎÕÔÙÅ ÂÉÂÌÉÏÔÅËÉ
|
||
ÏÂÒÁÔÎÏ ÓÏ×ÍÅÓÔÉÍÙ Ó ÂÉÂÌÉÏÔÅËÁÍÉ, ÐÏÓÔÁ×ÌÑÅÍÙÍÉ Ó ÂÁÚÏ×ÏÊ
|
||
ÓÉÓÔÅÍÏÊ.</para>
|
||
</note>
|
||
|
||
<warning>
|
||
<para>îÅËÏÔÏÒÙÅ C++ ÐÒÏÇÒÁÍÍÙ ÍÏÇÕÔ ÐÅÒÅÓÔÁÔØ ÒÁÂÏÔÁÔØ, ÅÓÌÉ
|
||
ÏÔÓÕÔÓÔ×ÕÅÔ ËÏÒÒÅËÔÎÁÑ ËÏÍÐÏÎÏ×ËÁ ÜÔÉÈ ÂÉÂÌÉÏÔÅË. åÓÌÉ ÎÅ×ÏÚÍÏÖÎÏ
|
||
ÓËÏÍÐÏÎÏ×ÁÔØ ÉÈ ×ÓÅ, ÒÅËÏÍÅÎÄÕÅÔÓÑ ÓÄÅÌÁÔØ ÜÔÏ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ
|
||
ÄÌÑ libstdc++.so.</para>
|
||
</warning>
|
||
</sect2>
|
||
|
||
<sect2 id="custom-cflags">
|
||
<title>óÐÅÃÉÁÌØÎÙÅ ÕÓÔÁÎÏ×ËÉ <literal>CFLAGS</literal> ÄÌÑ ËÏÌÌÅËÃÉÉ
|
||
ÐÏÒÔÏ×</title>
|
||
|
||
<para>äÌÑ ÐÏÒÔÏ×, ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÝÉÈ ÓÐÅÃÉÁÌØÎÙÅ ÕÓÔÁÎÏ×ËÉ
|
||
<literal>CFLAGS</literal>, ÉÓÐÒÁרÔÅ
|
||
<filename>/etc/make.conf</filename> ÓÏÇÌÁÓÎÏ ÓÌÅÄÕÀÝÅÍÕ ÐÒÉÍÅÒÕ:</para>
|
||
|
||
<programlisting>.if !empty(.CURDIR:M/usr/ports/*) && exists(/usr/local/bin/gcc44)
|
||
CC=gcc44
|
||
CXX=g++44
|
||
CPP=cpp44
|
||
CFLAGS+=-mssse3
|
||
.endif</programlisting>
|
||
|
||
<para>÷ÏÚÍÏÖÎÏ ÚÁÍÅÎÉÔØ ÐÏÌÎÏÓÔØÀ <literal>CFLAGS</literal> É/ÉÌÉ
|
||
ÏÐÒÅÄÅÌÉÔØ <literal>CPUTYPE</literal>. íÙ ÒÅËÏÍÅÎÄÕÅÍ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ
|
||
<literal>CPUTYPE</literal> ÔÁË ËÁË ×Ï ÍÎÏÇÉÈ ÐÏÒÔÁÈ ÆÌÁÇÉ ÏÐÔÉÍÉÚÁÃÉÉ
|
||
×ÙÂÉÒÁÀÔÓÑ, ÂÁÚÉÒÕÑÓØ ÎÁ ÚÎÁÞÅÎÉÉ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ.</para>
|
||
</sect2>
|
||
|
||
<sect2 id="excluding-unbuildable-ports">
|
||
<title>éÓËÌÀÞÅÎÉÅ ÐÏÒÔÏ×, ËÏÔÏÒÙÅ ÎÅ ÓÏÂÉÒÁÀÔÓÑ Ó ÎÏ×ÏÊ ×ÅÒÓÉÅÊ
|
||
<application>GCC</application></title>
|
||
|
||
<para>äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÉÓËÌÀÞÉÔØ ÐÏÒÔÙ, ËÏÔÏÒÙÅ ÎÅ ÓÏÂÉÒÁÀÔÓÑ ÓÏ
|
||
ÓÐÅÃÉÁÌØÎÏÊ ×ÅÒÓÉÅÊ <application>GCC</application>, ÉÓÐÒÁרÔÅ
|
||
<filename>/etc/make.conf</filename> ÓÏÇÌÁÓÎÏ ÓÌÅÄÕÀÝÅÍÕ
|
||
ÐÒÉÍÅÒÕ:</para>
|
||
|
||
<programlisting>.if !empty(.CURDIR:M/usr/ports/*) && exists(/usr/local/bin/gcc44)
|
||
.if empty(.CURDIR:M/usr/ports/net/openldap*)
|
||
CC=gcc44
|
||
CXX=g++44
|
||
CPP=cpp44
|
||
.endif
|
||
.endif</programlisting>
|
||
|
||
<para>ðÒÉÍÅÒ, ÐÒÉ×ÅÄ£ÎÎÙÊ ×ÙÛÅ, ÏÔÍÅÎÑÅÔ ÐÒÉÎÕÄÉÔÅÌØÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ
|
||
<command>gcc</command> 4.4 ÄÌÑ ÐÏÒÔÏ×
|
||
<filename role="package">net/openldap</filename>*. ôÁËÖÅ
|
||
×ÏÚÍÏÖÎÏ ÕËÁÚÁÔØ ÂÏÌØÛÅ ÐÏÒÔÏ× × ÏÄÎÏÊ ÓÔÒÏËÅ:</para>
|
||
|
||
<programlisting>.if empty(.CURDIR:M/usr/ports/net/openldap*) && empty(.CURDIR:M/usr/ports/xxx/yyy) && ...</programlisting>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="performance-imparct">
|
||
<title>÷ÌÉÑÎÉÅ ÎÁ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔØ ÉÓÐÏÌÎÑÅÍÙÈ ÆÁÊÌÏ×</title>
|
||
|
||
<para>éÓÐÏÌØÚÏ×ÁÎÉÅ <application>GCC</application> ×ÅÒÓÉÉ 4.4 Ó
|
||
ÒÁÚÒÅÛÅÎÎÙÍ ÎÁÂÏÒÏÍ ÉÎÓÔÒÕËÃÉÊ <acronym>SSSE3</acronym>
|
||
(ÅÓÌÉ ÏÎÉ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ <acronym>CPU</acronym>) ÍÏÖÅÔ ÄÁÔØ ÄÏ 10%
|
||
Õ×ÅÌÉÞÅÎÉÑ ÓÒÅÄÎÅÊ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ ÉÓÐÏÌÎÑÅÍÙÈ ÆÁÊÌÏ×. ÷ ÎÅËÏÔÏÒÙÈ
|
||
ÔÅÓÔÁÈ ÐÒÉÒÏÓÔ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ ÐÒÅ×ÙÛÁÌ 20% (ÎÁÐÒÉÍÅÒ, × ÏÂÒÁÂÏÔËÅ
|
||
ÍÕÌØÔÉÍÅÄÉÊÎÙÈ ÄÁÎÎÙÈ).</para>
|
||
|
||
<para>÷ ÔÁÂÌÉÃÅ, ÒÁÚÍÅÝÅÎÎÏÊ ÎÁ <ulink
|
||
url="http://people.freebsd.org/~mm/benchmarks/perlbench/"></ulink>,
|
||
ÐÏËÁÚÁÎÏ ÓÒÁ×ÎÅÎÉÅ <application>GCC</application> × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ
|
||
×ËÌÀÞÅÎÎÏÇÏ × ÂÁÚÕ &os;, <application>GCC</application> ×ÅÒÓÉÉ 4.3 É
|
||
<application>GCC</application> ×ÅÒÓÉÉ 4.4 Ó ÒÁÚÌÉÞÎÙÍÉ ËÏÍÂÉÎÁÃÉÑÍÉ
|
||
<literal>CFLAGS</literal>. äÌÑ ÓÒÁ×ÎÅÎÉÊ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ
|
||
ÉÓÐÏÌØÚÏ×ÁÌÓÑ ÔÅÓÔÏ×ÙÊ ÐÁËÅÔ perlbench.</para>
|
||
|
||
</sect1>
|
||
</article>
|