LINUX.ORG.RU

Про CFLAGS и USE флаги


0

1

Всем привет. Такой вопрос - прописываю я например опцию -msse2 в CFLAGS, нужно ли её также указывать в USE-флагах? Вот мой make.conf

# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /etc/make.conf.example for a more detailed example.
CFLAGS="-O3 -march=k8 -fomit-frame-pointer -pipe -msse -msse2 -msse3 -mmmx -m3dnow"
CXXFLAGS="${CFLAGS}"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="x86_64-pc-linux-gnu"
USE="kde sse sse2 mmx 3dnow gtk -gnome ncurses cdr dvd dvdr hal qt3 qt4 X userlocales win32codecs xine opengl nvidia"
MAKEOPTS="-j3"
VIDEO_CARDS="nvidia"
ACCEPT_KEYWORDS="~amd64"
GENTOO_MIRRORS="ftp://ftp.corbina.net/pub/Linux/gentoo/"
GENTOO_MIRRORS="ftp://mirror.aiya.ru/pub/gentoo/"
GENTOO_MIRRORS="ftp://ftp.org.kemsu.ru/gentoo"
GENTOO_MIRRORS="ftp://ftp.chg.ru/pub/Linux/distributions/gentoo"
GENTOO_MIRRORS="http://ftp.chg.ru/pub/Linux/distributions/gentoo"
LINGUAS="ru en"
FEATURES="parallel-fetch"
PORTDIR_OVERLAY="/usr/local/portage"
И ещё. Система будет собираться 64-битная, можно ли сделать чтобы она была _чисто_ 64-битная то есть без поддержки 32 бит?


>опцию -msse2 в CFLAGS, нужно ли её также указывать в USE-флагах

нужно. в USE флагах оно включит использование кусочков кода на ассемблере в пакетах которые поддерживают это ( configure --enable-sse )

>CFLAGS="-O3 -march=k8 -fomit-frame-pointer -pipe -msse -msse2 -msse3 -mmmx -m3dnow"


масло масляное )

-O3 -march=k8 -fomit-frame-pointer -pipe -mmmx -msse3 -m3dnow

-msse3 автоматом включит -msse -msse2
для 32 бит еще -mfpmath=sse хорошо бы
и можно -ftree-vectorize

Sylvia ★★★★★
()

> И ещё. Система будет собираться 64-битная, можно ли сделать чтобы она была _чисто_ 64-битная то есть без поддержки 32 бит?

Выбери профиль no-multilib. Только тут есть два НО: 1) из компилятора при пересборке будет выкинута поддержка сборки под x86, так что откатиться назад будет очень сложно без переустановки; 2) загрузчик всё-равно будет 32х-разрядный, так что его придётся ставить уже собранным (sys-boot/grub-static).

Deleted
()
Ответ на: комментарий от Sylvia

а если gcc версии 4.3, то лучше вообще -march=k8-sse3. 3dnow, mmx & sse(1,2,3) включатся сами (так говорят в вики гентушной). Я бы добавил еще "-s". LD-флаги сейчас адекватно понимаются ивключаюся большинством ебилдов, так что LD_FLAGS="-Wl,-s -Wl,-O1 -Wl,--hash-style=gnu" дадут небольшу прибавку к скорости. -O3... Хрен знает. С -O2 спокойнее.

eugeneblack
()
Ответ на: комментарий от eugeneblack

>(так говорят в вики гентушной)
Спасибо за ответ, но не могли бы Вы ссылку кинуть на вики, а то сам не нашёл

PamidoR
() автор топика
Ответ на: комментарий от PamidoR

я бы не ориентировалась на гентушную вики, лучше проверить флаги компилятора с помощью

gcc <тут все ваши флаги> -Q --help=target


так например -msse3 включает sse,sse2 , но не включает -mmmx

для 64 бит еще лучше включить -msahf ,если не включено,
тем более если у вас процессор AMD

Sylvia ★★★★★
()
Ответ на: комментарий от len

>>-msse -msse2 -msse3 -mmmx -m3dnow
>Не нужно. Выставь только use-флаги



наверное не соглашусь, если не права, то объясните (просто не использую генту)

CFLAGS="-msse3"

включит использование инструкций SSE для кода на C , особенно если будет использоваться -ftree-vectorize

USE флаги вроде (?) как включат параметры --enable-sse для ./configure
что позволит использовать кусочки кода на ассемблере, которые уже присутствуют в исходниках программы,
или USE включит -msse* в CFLAGS ?

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

> лучше проверить флаги компилятора с помощью

> gcc <тут все ваши флаги> -Q --help=target



давно хотел спросить, как вы это делаете

combine@mediacenter ~ $ gcc -msse -Q --help=target
gcc: не заданы входные файлы

name_no ★★
()
Ответ на: комментарий от name_no

Всё нормально выводит
[code]
compiler@localhost ~ $ gcc -msse -Q --help=target
Следующие ключи не зависят от целевой архитектуры:
-m128bit-long-double [выключено]
-m32 [включено]
-m3dnow [выключено]
-m3dnowa [выключено]
-m64 [выключено]
-m80387 [включено]
-m96bit-long-double [включено]
-mabm [выключено]
-maccumulate-outgoing-args [выключено]
-malign-double [выключено]
-malign-functions=
-malign-jumps=
-malign-loops=
-malign-stringops [включено]
-march= i686
-masm=
-mbranch-cost=
-mcld [выключено]
-mcmodel=
-mcx16 [выключено]
-mfancy-math-387 [включено]
-mfp-ret-in-387 [включено]
-mfpmath=
-mfused-madd [включено]
-mglibc [включено]
-mhard-float [включено]
-mieee-fp [включено]
-minline-all-stringops [выключено]
-minline-stringops-dynamically [выключено]
-mintel-syntax [выключено]
-mlarge-data-threshold=
-mmmx [выключено]
-mms-bitfields [выключено]
-mno-align-stringops [выключено]
-mno-fancy-math-387 [выключено]
-mno-push-args [выключено]
-mno-red-zone [выключено]
-mno-sse4 [включено]
-momit-leaf-frame-pointer [выключено]
-mpc
-mpopcnt [выключено]
-mpreferred-stack-boundary=
-mpush-args [включено]
-mrecip [выключено]
-mred-zone [включено]
-mregparm=
-mrtd [выключено]
-msahf [выключено]
-msoft-float [выключено]
-msse [включено]
-msse2 [выключено]
-msse3 [выключено]
-msse4 [выключено]
-msse4.1 [выключено]
-msse4.2 [выключено]
-msse4a [выключено]
-msse5 [выключено]
-msseregparm [выключено]
-mssse3 [выключено]
-mstack-arg-probe [выключено]
-mstackrealign [выключено]
-mstringop-strategy=
-mtls-dialect=
-mtls-direct-seg-refs [включено]
-mtune= generic
-muclibc [выключено]
[/code]

PamidoR
() автор топика
Ответ на: комментарий от PamidoR

> А, я понял - нужно создать симлинк на /usr/portage/profiles/default/linux/amd64/2008.0/no-multilib ?

Да, либо вручную, либо с помощью eselect profile.

Deleted
()
Ответ на: комментарий от Deleted

Ok, всё понятно, всем спасибо, тема закрыта.

PamidoR
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.