diff options
author | Gabor Kovesdan <gabor@FreeBSD.org> | 2009-11-15 23:08:28 +0000 |
---|---|---|
committer | Gabor Kovesdan <gabor@FreeBSD.org> | 2009-11-15 23:08:28 +0000 |
commit | 9c4b18c65d0cb84deccb7cd06e2e9ea42ca6b87e (patch) | |
tree | 6a3e803cb3e58a86e009aaa64d89d39501522e95 /ru_RU.KOI8-R/articles | |
parent | cc4e680267155e65d305d50dc3f29f23c800f2f3 (diff) | |
download | doc-9c4b18c65d0cb84deccb7cd06e2e9ea42ca6b87e.tar.gz doc-9c4b18c65d0cb84deccb7cd06e2e9ea42ca6b87e.zip |
- Add custom-gcc article translation
PR: docs/140418
Submitted by: Taras Korenko <ds@ukrhub.net>
Notes
Notes:
svn path=/head/; revision=34911
Diffstat (limited to 'ru_RU.KOI8-R/articles')
-rw-r--r-- | ru_RU.KOI8-R/articles/Makefile | 1 | ||||
-rw-r--r-- | ru_RU.KOI8-R/articles/custom-gcc/Makefile | 18 | ||||
-rw-r--r-- | ru_RU.KOI8-R/articles/custom-gcc/article.sgml | 234 |
3 files changed, 253 insertions, 0 deletions
diff --git a/ru_RU.KOI8-R/articles/Makefile b/ru_RU.KOI8-R/articles/Makefile index d6296c3150..b260f28c1a 100644 --- a/ru_RU.KOI8-R/articles/Makefile +++ b/ru_RU.KOI8-R/articles/Makefile @@ -14,6 +14,7 @@ SUBDIR+= committers-guide SUBDIR+= console-server SUBDIR+= contributing #SUBDIR+= contributors +SUBDIR+= custom-gcc SUBDIR+= cvs-freebsd SUBDIR+= cvsup-advanced SUBDIR+= dialup-firewall diff --git a/ru_RU.KOI8-R/articles/custom-gcc/Makefile b/ru_RU.KOI8-R/articles/custom-gcc/Makefile new file mode 100644 index 0000000000..b7bd286403 --- /dev/null +++ b/ru_RU.KOI8-R/articles/custom-gcc/Makefile @@ -0,0 +1,18 @@ +# +# $FreeBSD$ +# + +DOC?= article + +FORMATS?= html +WITH_ARTICLE_TOC?= YES + +INSTALL_COMPRESSED?= gz +INSTALL_ONLY_COMPRESSED?= + +SRCS= article.sgml + +URL_RELPREFIX?= ../../../.. +DOC_PREFIX?= ${.CURDIR}/../../.. + +.include "${DOC_PREFIX}/share/mk/doc.project.mk" diff --git a/ru_RU.KOI8-R/articles/custom-gcc/article.sgml b/ru_RU.KOI8-R/articles/custom-gcc/article.sgml new file mode 100644 index 0000000000..3dd920e894 --- /dev/null +++ b/ru_RU.KOI8-R/articles/custom-gcc/article.sgml @@ -0,0 +1,234 @@ +<!-- + The FreeBSD Russian Documentation Project + $FreeBSD$ + Original Revision: 1.2 +--> +<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [ +<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//EN"> +%articles.ent; +]> +<!-- Перевод: Коренко Тарас --> + +<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> + + <pubdate>$FreeBSD$</pubdate> + + <legalnotice id="trademarks" role="trademarks"> + &tm-attrib.freebsd; + &tm-attrib.general; + </legalnotice> + + <copyright> + <year>2009</year> + <holder>The &os; Documentation Project</holder> + </copyright> + + <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> |