# Gebruik USE flags

## hema

Beste mensen,

Ik heb gentoo aan de praat. Volgende stap is het verder optimaliseren. Dit oa met het instellen van de USE flags in Make.conf.

Ik weet wat ik wil, geen gnome en geen kde.

Maar een systeem geoptimaliseerd voor blender www.blender.org

Ik heb het artikel over USE flags in het handbook gelezen, maat zit toch nog met vragen.

Welke strategie moet ik volgen om te bepalen met welke USE flags ik de kernel moet compileren.

Moet ik gewoon kijken welke USE flags blender gebruikt en vervolgens alle andere verwijderen, is dat een juiste strategie?

----------

## zwik

Gebruik de USE flags waar je support voor wil hebben op de packages die jij geinstalleerd wil hebben. Zet dit in je make.conf of als je specifiek voor elke package wilt aangeven in /etc/portage/package.use. 

Ik zou niet echt een specifieke strategie weten. Gewoon goed kijken welke je wel wil en welke niet  :Smile:  .

----------

## Q-collective

Installeer ufed voor het makkelijk editen van je USE flags.

----------

## Rainmaker

Maakt niet uit. Als je meer USE flags hebt, heb je wat meer dependencies, maar dit kost je in het ergste geval wat diskspace.

Als je er puur en alleen blender op wil gaan draaien, zijn eigenlijk alleen de USE flags van bender en zijn dependencies interessant. De flags van je deps zijn interessant omdat je niet wil dat 1 programma onnodige modules gaat laden. Het gaat hierbij eigenlijk dus alleen om runtime dependencies,  Compile-time dependencies zijn niet interessant (nou ja, misschien nog een heel klein beetje; 1 .h filetje wat 1 definitie mist, maar niet echt)

Het gaat dus om de pakketten achter:

```
Medusa ~ $ ldd `which blender`

        libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x00002aaaaabc7000)

        libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00002aaaaacfc000)

        libz.so.1 => /lib/libz.so.1 (0x00002aaaaae34000)

        libpython2.4.so.1.0 => /usr/lib/libpython2.4.so.1.0 (0x00002aaaaaf51000)

        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00002aaaab19f000)

        libgettextlib-0.16.1.so => /usr/lib/libgettextlib-0.16.1.so (0x00002aaaab34a000)

        libavformat.so.51 => /usr/lib/libavformat.so.51 (0x00002aaaab472000)

        libavcodec.so.51 => /usr/lib/libavcodec.so.51 (0x00002aaaab5fe000)

        libavutil.so.49 => /usr/lib/libavutil.so.49 (0x00002aaaabcea000)

        libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0x00002aaaabdf6000)

        libGL.so.1 => /usr/lib64/opengl/nvidia/lib/libGL.so.1 (0x00002aaaabf59000)

        libGLU.so.1 => /usr/lib/libGLU.so.1 (0x00002aaaac121000)

        libX11.so.6 => /usr/lib/libX11.so.6 (0x00002aaaac2dd000)

        libXi.so.6 => /usr/lib/libXi.so.6 (0x00002aaaac510000)

        libutil.so.1 => /lib/libutil.so.1 (0x00002aaaac619000)

        libc.so.6 => /lib/libc.so.6 (0x00002aaaac71d000)

        libm.so.6 => /lib/libm.so.6 (0x00002aaaac952000)

        libdl.so.2 => /lib/libdl.so.2 (0x00002aaaacaa6000)

        libpthread.so.0 => /lib/libpthread.so.0 (0x00002aaaacbab000)

        libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libstdc++.so.6 (0x00002aaaaccc4000)

        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00002aaaacebb000)

        libogg.so.0 => /usr/lib/libogg.so.0 (0x00002aaaacfc8000)

        libmp3lame.so.0 => /usr/lib/libmp3lame.so.0 (0x00002aaaad0ce000)

        libtheora.so.0 => /usr/lib/libtheora.so.0 (0x00002aaaad267000)

        libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x00002aaaad39e000)

        libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0x00002aaaad4e6000)

        libxvidcore.so.4 => /usr/lib/libxvidcore.so.4 (0x00002aaaad7c6000)

        libfaac.so.0 => /usr/lib/libfaac.so.0 (0x00002aaaad9d4000)

        libfaad.so.0 => /usr/lib/libfaad.so.0 (0x00002aaaadafb000)

        libdirectfb-1.0.so.0 => /usr/lib/libdirectfb-1.0.so.0 (0x00002aaaadc45000)

        libfusion-1.0.so.0 => /usr/lib/libfusion-1.0.so.0 (0x00002aaaaddd8000)

        libdirect-1.0.so.0 => /usr/lib/libdirect-1.0.so.0 (0x00002aaaadee0000)

        libGLcore.so.1 => /usr/lib64/opengl/nvidia/lib/libGLcore.so.1 (0x00002aaaadff6000)

        libnvidia-tls.so.1 => /usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.1 (0x00002aaaaea28000)

        libXext.so.6 => /usr/lib/libXext.so.6 (0x00002aaaaeb29000)

        libXau.so.6 => /usr/lib/libXau.so.6 (0x00002aaaaec3b000)

        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00002aaaaed3f000)

        /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000)

```

Een beetje spelen met bash geeft je dan het volgende lijstje van te optimaliseren libraries:

```
Medusa ~ $ ldd `which blender` | cut -d ">" -f 2 | cut -d "(" -f 1 | xargs equery b 

[ Searching for file(s) /usr/lib/libjpeg.so.62,/usr/lib/libpng12.so.0,/lib/libz.so.1,/usr/lib/libpython2.4.so.1.0,/usr/lib/libfreetype.so.6,

/usr/lib/libgettextlib-0.16.1.so,/usr/lib/libavformat.so.51,/usr/lib/libavcodec.so.51,/usr/lib/libavutil.so.49,/usr/lib/libSDL-1.2.so.0,

/usr/lib64/opengl/nvidia/lib/libGL.so.1,/usr/lib/libGLU.so.1,/usr/lib/libX11.so.6,/usr/lib/libXi.so.6,/lib/libutil.so.1,/lib/libc.so.6,/lib/libm.so.6,

/lib/libdl.so.2,/lib/libpthread.so.0,/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libstdc++.so.6,/lib/libgcc_s.so.1,/usr/lib/libogg.so.0,

/usr/lib/libmp3lame.so.0,/usr/lib/libtheora.so.0,/usr/lib/libvorbis.so.0,/usr/lib/libvorbisenc.so.2,/usr/lib/libxvidcore.so.4,

/usr/lib/libfaac.so.0,/usr/lib/libfaad.so.0,/usr/lib/libdirectfb-1.0.so.0,/usr/lib/libfusion-1.0.so.0,/usr/lib/libdirect-1.0.so.0,

/usr/lib64/opengl/nvidia/lib/libGLcore.so.1,/usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.1,/usr/lib/libXext.so.6,/usr/lib/libXau.so.6,

/usr/lib/libXdmcp.so.6,/lib64/ld-linux-x86-64.so.2 in *... ]

sys-libs/glibc-2.5-r3 (/lib64/ld-linux-x86-64.so.2 -> ld-2.5.so)

x11-drivers/nvidia-drivers-1.0.9755-r1 (/usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.1 -> ../tls/libnvidia-tls.so.1)

x11-drivers/nvidia-drivers-1.0.9755-r1 (/usr/lib64/opengl/nvidia/lib/libGL.so.1 -> libGL.so.1.0.9755)

x11-drivers/nvidia-drivers-1.0.9755-r1 (/usr/lib64/opengl/nvidia/lib/libGLcore.so.1 -> libGLcore.so.1.0.9755)

sys-devel/gcc-4.1.2 (/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libstdc++.so.6 -> libstdc++.so.6.0.8)
```

Probeer deze commando's eerst op je eigen machine, want het kan verschillen (hardware e.d.)

PS, dit onderste commando werkt niet goed... Weet niet precies waarom, maar bijvoorbeeld /usr/lib/libjpeg.so.62 is niet terug te vinden door equery... Kan ook aan mijn systeem liggen...

----------

