- Add custom-gcc article translation
PR: docs/140418 Submitted by: Taras Korenko <ds@ukrhub.net>
This commit is contained in:
parent
cc4e680267
commit
9c4b18c65d
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=34911
3 changed files with 253 additions and 0 deletions
ru_RU.KOI8-R/articles
|
@ -14,6 +14,7 @@ SUBDIR+= committers-guide
|
||||||
SUBDIR+= console-server
|
SUBDIR+= console-server
|
||||||
SUBDIR+= contributing
|
SUBDIR+= contributing
|
||||||
#SUBDIR+= contributors
|
#SUBDIR+= contributors
|
||||||
|
SUBDIR+= custom-gcc
|
||||||
SUBDIR+= cvs-freebsd
|
SUBDIR+= cvs-freebsd
|
||||||
SUBDIR+= cvsup-advanced
|
SUBDIR+= cvsup-advanced
|
||||||
SUBDIR+= dialup-firewall
|
SUBDIR+= dialup-firewall
|
||||||
|
|
18
ru_RU.KOI8-R/articles/custom-gcc/Makefile
Normal file
18
ru_RU.KOI8-R/articles/custom-gcc/Makefile
Normal file
|
@ -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"
|
234
ru_RU.KOI8-R/articles/custom-gcc/article.sgml
Normal file
234
ru_RU.KOI8-R/articles/custom-gcc/article.sgml
Normal file
|
@ -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>
|
Loading…
Reference in a new issue