# [HOWTO] Amd64 : Compiler sa propre libasound.so.2.0.0

## YetiBarBar

Le paquet emul-linux-x86-soundlibs est basé sur des alsa-lib "un peu vieillotes" par rapport à nos noyaux (ou modules pour quelques-uns) actuels. Quelques binaires dont flash (le proprio, swfdec n'a pas ce problème mais marche pas terrible chez moi) et skype ne marche pas avec et on choppe une erreur du type :

```
ALSA lib pcm.c:2105:(snd_pcm_open_conf) Cannot open shared library
```

Comme je ne suis apparemment pas le seul à m'être confronté à ce problème, je vous livre la solution que j'ai adoptée : compiler moi-même un fichier libasound-2.0.0 en 32 bits.

1/ Rapatrier les sources de alsa-lib correspondant à votre noyau (ou à vos alsa-lib 64bit auquel cas, vous les avez déjà). Pour le 2.6.24, c'est alsa-lib-1.0.16

```
emerge -f alsa-lib
```

2/ Extraire l'archive dans votre /home (enfin dans un répertoire de votre /home) et faire depuis une konsole (ou tout autre terminal) un cd dans ce répertoire

3/ Les choses marrantes :

Lancer depuis ce répertoire un :

```
./configure --prefix=/home/yourname/temp LDFLAGS="-L/emul/linux/x86/usr/lib -m32" CFLAGS="-L/emul/linux/x86/usr/lib -m32"

make

make install
```

En prenant soin de remplacer /home/yourname/temp par le répertoire temp de votre choix.

Le make plante lamentablement chez moi, mais l'essentiel étant que la lib utile est compilée ..., ne mettez juste pas de && entre make et make install!

4/ 

```
sudo cp /home/yourname/temp/lib/libasound.so.2.0.0 /usr/lib32/libasound.so.2.0.0
```

Relancez firefox ou skype.

Si vous emerger emul-linux-x86-soundlibs, ça repétera. Recommencez l'étape 4 si vous avez toujours le même noyau.

----------

## YetiBarBar

postcount++;

 *YetiBarBar wrote:*   

> Si vous emerger emul-linux-x86-soundlibs, ça repétera. Recommencez l'étape 4 si vous avez toujours le même noyau.

 

Je confirme que ça pête (un revdep-rebuild pas assez surveillé mais vu les libs que j'ai updaté aujourd'hui, c'était incontournable), mais si on l'a gardée dans un coin, ça se copie bien ...

/me retourne à son monologue ...

----------

## geekounet

Hm, je me suis aperçu qu'à chaque reboot je reperdais le son. Vu que j'avais posé l'install provisoire des libs dans /var/tmp, et qu'il est vidé à chaque reboot (tmpfs oblige), je me suis dit que s'en était la cause. Je pense que le coup de changer le prefix est à l'origine de ce problème. Du coup, je viens de faire ça en gardant le prefix sur /usr, en changeant le libdir sur /usr/lib32 comme il se doit, mais en faisant l'install en utilisant le DESTDIR (méthode des ebuilds), et là en supprimant le répertoire temporaire maintenant ça fonctionne. Je confirmerai quand je rebooterai ;p Ha et aussi, pour que la compilation se termine bien, il faut désactiver le python.  :Smile: 

En résumé :

```
# cd /var/tmp

# tar xjf /var/distfiles/alsa-lib-1.0.16.tar.bz2

# cd alsa-lib-1.0.16

# ./configure --prefix="/usr" --libdir="/usr/lib32" LDFLAGS="-L/emul/linux/x86/usr/lib -m32" CFLAGS="-L/emul/linux/x86/usr/lib -m32" --disable-python

# make

# mkdir -p /var/tmp/alsa-temp

# make DESTDIR="/var/tmp/alsa-temp" install

# install -m 755 /var/tmp/alsa-temp/usr/lib32/libasound.so.2.0.0 /usr/lib32/

# install -m 755 /var/tmp/alsa-temp/usr/lib32/alsa-lib/smixer/*.so /usr/lib32/alsa-lib/smixer/
```

Et voilà, ça fait déjà plus propre ;p

Le mieux serait quand même de faire un petit ebuild, mais le problème c'est que ça ferai une collision, donc c'est pas possible. :/

EDIT: après reboot, je confirme que ça continue à fonctionner, donc ma piste était bonne.  :Smile: 

----------

## YetiBarBar

Je n'ai pas vu ça chez moi mais c'est possible (j'ai construit la lib dans mon /home et je l'ai gardé pour pouvoir la recopier).

Ta solution est plutôt élégante et j'avoue que l'idée de me faire un petit ebuild me tarode de plus en plus, mais ça ne sera très certainement ps avant ce week end ... qui s'annonce déjà très chargé ...

----------

## geekounet

 *YetiBarBar wrote:*   

> Ta solution est plutôt élégante et j'avoue que l'idée de me faire un petit ebuild me tarode de plus en plus, mais ça ne sera très certainement ps avant ce week end ... qui s'annonce déjà très chargé ...

 

T'en fais pas, je prévois d'en faire un depuis hier, je le ferai ce soir, une simple mise à jour de l'archive et voilà  :Wink:  (j'ai de quoi l'hoster sans problème).

----------

## geekounet

Voilà, j'ai fait un ptit ebuild vite fait. C'est l'ebuild original modifié, avec une ptite archive de plus avec les libs alsa précompilées à jour, qui écrasent les anciennes  :Razz: 

Donc pour ça :

```
# layman -f -o http://foo.poildetroll.net/layman-local.xml -a akoya

# emerge -au app-emulation/emul-linux-x86-soundlibs
```

Et vous devriez avoir un app-emulation/emul-linux-x86-soundlibs-20080316-r1 à emerger  :Wink: 

EDIT: pour ceux qui ne veulent pas rajouter un overlay de plus, l'ebuild est accessible directement ici  :Razz:  (et le lien tout en bas de la page pour le télécharger en texte pur  :Wink: ).Last edited by geekounet on Wed Apr 16, 2008 6:11 pm; edited 1 time in total

----------

## YetiBarBar

Merci geekounet ! 

Je teste ça dès que j'ai le temps (ie pas avant ce week end, et très certainement pas avant lundi même ...)

----------

## GroMeZ

Merci bien pour l'ebuild, ça a bien compilé  :Smile: 

Reste à voir à la longue, mais je me fais pas de soucis pour ça.

----------

## geekounet

Problème réglé en upstream apparemment  :Smile: 

```
*emul-linux-x86-soundlibs-20080418 (19 Apr 2008)

  19 Apr 2008; Mike Doty <kingtaco@gentoo.org>

  +emul-linux-x86-soundlibs-20080418.ebuild:

  version bump for alsa-*-1.0.16
```

Je vais pouvoir retirer mon ebuild  :Smile: 

----------

