diff options
author | Gabor Kovesdan <gabor@FreeBSD.org> | 2012-10-01 09:53:01 +0000 |
---|---|---|
committer | Gabor Kovesdan <gabor@FreeBSD.org> | 2012-10-01 09:53:01 +0000 |
commit | b4346b9b2dfe86a97907573086dff096850dcb1d (patch) | |
tree | 9b951977cbd22dada9b868ac83b1d56791ea3859 /ru_RU.KOI8-R/articles/custom-gcc/article.xml | |
parent | bee5d224febbeba11356aa848006a4f5f9e24b30 (diff) | |
download | doc-b4346b9b2dfe86a97907573086dff096850dcb1d.tar.gz doc-b4346b9b2dfe86a97907573086dff096850dcb1d.zip |
- Rename .sgml files to .xml
- Reflect the rename in referencing files
Approved by: doceng (implicit)
Notes
Notes:
svn path=/head/; revision=39631
Diffstat (limited to 'ru_RU.KOI8-R/articles/custom-gcc/article.xml')
-rw-r--r-- | ru_RU.KOI8-R/articles/custom-gcc/article.xml | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/ru_RU.KOI8-R/articles/custom-gcc/article.xml b/ru_RU.KOI8-R/articles/custom-gcc/article.xml new file mode 100644 index 0000000000..56fda754e4 --- /dev/null +++ b/ru_RU.KOI8-R/articles/custom-gcc/article.xml @@ -0,0 +1,240 @@ +<?xml version="1.0" encoding="koi8-r" standalone="no"?> +<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN" + "../../../share/sgml/freebsd42.dtd" [ +<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//RU" "../../share/sgml/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> |