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 @@ -1,58 +1,59 @@ # # The FreeBSD Russian Documentation Project # # $FreeBSD$ # $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/Makefile,v 1.37 2006/03/22 17:06:02 marck Exp $ # # Original revision: 1.42 # SUBDIR = SUBDIR+= 5-roadmap SUBDIR+= checkpoint SUBDIR+= committers-guide SUBDIR+= console-server SUBDIR+= contributing #SUBDIR+= contributors +SUBDIR+= custom-gcc SUBDIR+= cvs-freebsd SUBDIR+= cvsup-advanced SUBDIR+= dialup-firewall SUBDIR+= diskless-x SUBDIR+= euro SUBDIR+= explaining-bsd SUBDIR+= fbsd-from-scratch #SUBDIR+= filtering-bridges SUBDIR+= fonts SUBDIR+= formatting-media SUBDIR+= freebsd-questions SUBDIR+= geom-class SUBDIR+= gjournal-desktop SUBDIR+= hats SUBDIR+= hubs SUBDIR+= ipsec-must SUBDIR+= laptop SUBDIR+= linux-comparison SUBDIR+= mailing-list-faq SUBDIR+= mh SUBDIR+= multi-os SUBDIR+= new-users SUBDIR+= pam SUBDIR+= portbuild SUBDIR+= pr-guidelines SUBDIR+= problem-reports SUBDIR+= pxe SUBDIR+= relaydelay SUBDIR+= releng SUBDIR+= releng-packages #SUBDIR+= serial-uart SUBDIR+= solid-state #SUBDIR+= storage-devices #SUBDIR+= vinum SUBDIR+= version-guide SUBDIR+= vm-design SUBDIR+= zip-drive # ROOT_SYMLINKS+= new-users DOC_PREFIX?= ${.CURDIR}/../.. .include "${DOC_PREFIX}/share/mk/doc.project.mk" 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 @@ + + +%articles.ent; +]> + + +
+ + Использование более новых версий <application>GCC</application> + и <application>binutils</application> c коллекцией портов + &os; + + + Martin + Matuska + +
mm@FreeBSD.org
+
+
+ + $FreeBSD$ + + + &tm-attrib.freebsd; + &tm-attrib.general; + + + + 2009 + The &os; Documentation Project + + + + В этой статье описано, как использовать более новые версии + компиляторов GCC и набора утилит + binutils из коллекции портов &os;. + Здесь также обсуждаются специализированные конфигурации + GCC. + +
+ + + Предисловие + + Компилятор, поставляемый с &os; 8.0, — это + GCC версии 4.2.1. В базовую систему + &os; включены binutils версии + 2.15. Это довольно-таки старые версии, и в них, между прочим, + отсутствует поддержка новых инструкций CPU, таких + как SSSE3, SSE4.1, + SSE4.2 и т.п. Ввиду лицензионных ограничений, + новые версии этих приложений не будут включены в базовую систему. + К счастью, есть возможность использовать более новую версию компилятора + GCC (например, версию 4.4) + установив его из коллекции портов &os;. + + + + Подготовка + + + Установка binutils из портов + + Чтобы задействовать все новые функциональные возможности + последней версии GCC, желательна установка + наиболее новой версии binutils. Это + не является обязательным, но без обновления + binutils вы не получите поддержку + новых инструкций CPU. + + Для того, чтоб установить наиболее новую версию + binutils используя коллекцию портов + &os;, выполните следующую команду: + + &prompt.root; cd /usr/ports/devel/binutils && make install + + + + Установка GCC из портов + + + В коллекции портов &os; можно найти несколько новых версий + GCC. В нашем примере мы устанавливаем + стабильную версию 4.4. Однако, возможно установить предыдущую + или более новую (развивающуюся) версию (например: + lang/gcc43 или + lang/gcc45). + + Для установки одного из вышеупомянутых портов + GCC, наберите следующую команду: + + &prompt.root; cd /usr/ports/lang/gcc44 && make install + + + + + Настройка портов на использование требуемой + версии <application>GCC</application> + + Для использования требуемой версии GCC, + установленной из коллекции портов &os, требуется дополнительная + конфигурация системы. + + + Изменения в <filename>make.conf</filename> + + Добавьте следующие строки в /etc/make.conf + (или исправьте существующие): + + .if !empty(.CURDIR:M/usr/ports/*) && exists(/usr/local/bin/gcc44) +CC=gcc44 +CXX=g++44 +CPP=cpp44 +.endif + + В качестве альтернативы, можно установить вручную переменные + окружения ${CC} и ${CPP}. + + + Примеры, приведённые выше, сделаны для + GCC версии 4.4. Для того, чтобы + использовать gcc43, замените + "gcc44" на "gcc43" и + "4.4" на "4.3" + и т.п. + + + + + Исправления в <filename>libmap.conf</filename> + + Многие установленные из портов приложения и библиотеки + скомпонованы с libgcc_s или libstdc++. В базовую систему уже + включены эти библиотеки, но от более старой версии + GCC (версии 4.2.1). Чтобы предоставить + rltd (и ldd) правильные версии, добавьте следующие записи к + /etc/libmap.conf (или измените + существующие): + + 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 + + + Пример выше приведен для GCC + версии 4.4. Если вы используете gcc43, + замените "gcc44" на "gcc43" + и т.д. Следует отметить, что все вышеупомянутые библиотеки + обратно совместимы с библиотеками, поставляемыми с базовой + системой. + + + + Некоторые C++ программы могут перестать работать, если + отсутствует корректная компоновка этих библиотек. Если невозможно + скомпоновать их все, рекомендуется сделать это по крайней мере + для libstdc++.so. + + + + + Специальные установки <literal>CFLAGS</literal> для коллекции + портов + + Для портов, не поддерживающих специальные установки + CFLAGS, исправьте + /etc/make.conf согласно следующему примеру: + + .if !empty(.CURDIR:M/usr/ports/*) && exists(/usr/local/bin/gcc44) +CC=gcc44 +CXX=g++44 +CPP=cpp44 +CFLAGS+=-mssse3 +.endif + + Возможно заменить полностью CFLAGS и/или + определить CPUTYPE. Мы рекомендуем устанавливать + CPUTYPE так как во многих портах флаги оптимизации + выбираются, базируясь на значении этой переменной. + + + + Исключение портов, которые не собираются с новой версией + <application>GCC</application> + + Для того, чтобы исключить порты, которые не собираются со + специальной версией GCC, исправьте + /etc/make.conf согласно следующему + примеру: + + .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 + + Пример, приведённый выше, отменяет принудительное использование + gcc 4.4 для портов + net/openldap*. Также + возможно указать больше портов в одной строке: + + .if empty(.CURDIR:M/usr/ports/net/openldap*) && empty(.CURDIR:M/usr/ports/xxx/yyy) && ... + + + + + Влияние на производительность исполняемых файлов + + Использование GCC версии 4.4 с + разрешенным набором инструкций SSSE3 + (если они поддерживаются CPU) может дать до 10% + увеличения средней производительности исполняемых файлов. В некоторых + тестах прирост производительности превышал 20% (например, в обработке + мультимедийных данных). + + В таблице, размещенной на , + показано сравнение GCC в настоящее время + включенного в базу &os;, GCC версии 4.3 и + GCC версии 4.4 с различными комбинациями + CFLAGS. Для сравнений производительности + использовался тестовый пакет perlbench. + + +