# [Install]Depuis chroot ( resolu)

## bob1977

Bonsoir,

  J'essaye d'installer gentoo depuis un chroot de kubuntu 64 bits. Tout se déroule bien jusqu'à la compilation de qt. Voila les détails:

L'erreur de compilation de qt:

```
g++ -c -march=prescott -O2 -pipe -I/usr/include/mysql -march=prescott -O2 -pipe -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_CORE_LIB -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_44_API_QSQLQUERY_FINISH -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_NO_DEBUG -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++ -I. -I../../include -I../../include/QtCore -Iglobal -I.moc/release-shared -I.uic/release-shared -o .obj/release-shared/qreadwritelock.o thread/qreadwritelock.cpp

{standard input}: Assembler messages:

{standard input}:336: Error: suffix or operands invalid for `xchg'

{standard input}:752: Error: suffix or operands invalid for `cmpxchg'

make[1]: *** [.obj/release-shared/qlibraryinfo.o] Erreur 1

make[1]: *** Attente des tâches non terminées....

{standard input}: Assembler messages:

{standard input}:309: Error: suffix or operands invalid for `cmpxchg'

{standard input}:708: Error: suffix or operands invalid for `xchg'

{standard input}:821: Error: suffix or operands invalid for `cmpxchg'

{standard input}:1134: Error: suffix or operands invalid for `xchg'

make[1]: *** [.obj/release-shared/qglobal.o] Erreur 1

make[1]: quittant le répertoire « /var/tmp/portage/x11-libs/qt-4.3.2-r1/work/qt-x11-opensource-src-4.3.2/src/corelib »

make: *** [sub-corelib-all-ordered] Erreur 2

 *

 * ERROR: x11-libs/qt-4.3.2-r1 failed.

 * Call stack:

 *            ebuild.sh, line 1701:  Called dyn_compile

 *            ebuild.sh, line 1039:  Called qa_call 'src_compile'

 *            ebuild.sh, line   44:  Called src_compile

 *   qt-4.3.2-r1.ebuild, line  231:  Called die

 * The specific snippet of code:

 *      emake all || die

 *  The die message:

 *   (no error message)

 *

 * If you need support, post the topmost build error, and the call stack if relevant.

 * A complete build log is located at '/var/log/portage/x11-libs:qt-4.3.2-r1:20080210-152228.log'.

```

 D'apres mes recherches sur le forum et bugs.gentoo, ce serait dû au fait que le syteme hote ne soit pas le meme que sur celui d'arrivee ( compilation de code 64 bits pour du 32 bits ou inversement)

uname -a depuis kubuntu:

```
Linux bobmachine 2.6.22-14-generic #1 SMP Thu Jan 31 23:33:13 UTC 2008 x86_64 GNU/Linu
```

uname -a depuis gentoo:

```
Linux bobmachine 2.6.22-14-generic #1 SMP Thu Jan 31 23:33:13 UTC 2008 x86_64 Intel(R) Core(TM)2 Duo CPU E4500 @ 2.20GHz GenuineIntel GNU/Linux
```

J'ai telecharge le stage3 i686 (stage3-i686-2007.0.tar.bz2), decompresse, idem pour portage, fait l'emerge system sans probleme.

 J'ai essaye de me compiler un noyau pour gentoo mais ca ne compile pas des le debut:

```
make bzImage

  CHK     include/linux/version.h

  CHK     include/linux/utsrelease.h

  CC      arch/x86_64/kernel/asm-offsets.s

arch/x86_64/kernel/asm-offsets.c:1: erreur: code model ‘kernel’ not supported in the 32 bit mode

arch/x86_64/kernel/asm-offsets.c:1: désolé, pas implanté: mode 64 bits pas compilé en

make[1]: *** [arch/x86_64/kernel/asm-offsets.s] Erreur 1

make: *** [prepare0] Erreur 2

```

 Que dois-je faire pour pouvoir m'en sortir s'il vous plait?

emerge --info

```
Portage 2.1.3.19 (default-linux/x86/2007.0, gcc-4.1.2, glibc-2.6.1-r0, 2.6.22-14-generic x86_64)

=================================================================

System uname: 2.6.22-14-generic x86_64 Intel(R) Core(TM)2 Duo CPU E4500 @ 2.20GHz

Timestamp of tree: Sun, 10 Feb 2008 01:46:01 +0000

ccache version 2.4 [enabled]

app-shells/bash:     3.2_p17-r1

dev-lang/python:     2.4.4-r6

dev-python/pycrypto: 2.0.1-r6

dev-util/ccache:     2.4-r7

sys-apps/baselayout: 1.12.10-r5

sys-apps/sandbox:    1.2.18.1-r2

sys-devel/autoconf:  2.13, 2.61-r1

sys-devel/automake:  1.7.9-r1, 1.9.6-r2, 1.10

sys-devel/binutils:  2.18-r1

sys-devel/gcc-config: 1.3.14

sys-devel/libtool:   1.5.24

virtual/os-headers:  2.6.23-r3

ACCEPT_KEYWORDS="x86"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc"

CONFIG_PROTECT_MASK="/etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/terminfo /etc/udev/rules.d"

CXXFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"

DISTDIR="/usr/portage/distfiles"

FEATURES="ccache confcache distlocks metadata-transfer parallel-fetch sandbox sfperms strict unmerge-orphans userfetch"

GENTOO_MIRRORS="http://distfiles.gentoo.org http://www.ibiblio.org/pub/Linux/distributions/gentoo"

LANG="fr_FR.UTF-8"

LINGUAS="fr en"

MAKEOPTS="-j3"

PKGDIR="/usr/portage/packages"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

USE="X acl acpi alsa asf avi bash-completion berkdb bitmap-fonts bzip2 cdda cdr cli cracklib crypt cups dbus dri dvd dvdr dvdread encode ffmpeg firefox flac fortran freetype gdbm geoip gnutls gpm gtk gtk2 hal iconv ipv6 isdnlog jpeg kde kdeenablefinal live mad matroska midi mp3 mpeg mplayer mudflap musicbrainz mysql ncurses network nls nptl nptlonly nvidia ogg oggvorbis opengl openmp pam pcre pda pdf perl php png pppd python qt qt3 qt3support qt4 rar readline reflection rtsp session skins spell spl sqlite srt ssl stream svg tcpd threads tordns transcode truetype-fonts type1-fonts unicode usb v4l v4l2 videos win32codecs wma x264 x86 xine xml xml2 xorg xosd xprint xv xvid zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="fr en" USERLAND="GNU" VIDEO_CARDS="nvidia nv vesa"

Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, LDFLAGS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY

```

Last edited by bob1977 on Sun Feb 10, 2008 10:03 pm; edited 1 time in total

----------

## Alexis

J'ai jamais vu ce problème, mais:

- i686 c'est du 32 bits, si tu voulais faire du 64 fallait prendre le stage amd64 (ça je pense que tu le sais)

- pour chrooter et éviter d'avoir ton uname, au lieu de faire:

```
chroot /ton/chroot
```

y'aurait fallu faire:

```
linux32 chroot /ton/chroot
```

ensuite t'aurais eu un uname dans le genre:

```
Linux hostname 2.6.24 #15 PREEMPT Fri Jan 25 10:12:01 CET 2008 i686 AMD Athlon(tm) 64 Processor 3200+ AuthenticAMD GNU/Linux
```

au lieu de :

```
Linux hostname 2.6.24 #15 PREEMPT Fri Jan 25 10:12:01 CET 2008 x86_64 AMD Athlon(tm) 64 Processor 3200+ AuthenticAMD GNU/Linux
```

note le i686 à la place de x86_64, c'est probablement là ton problème.

----------

## bob1977

Merci pour cette bonne explication,

 *Quote:*   

> i686 c'est du 32 bits, si tu voulais faire du 64 fallait prendre le stage amd64 (ça je pense que tu le sais) 

 

 Je ne m'en suis rendu compte qu'au bout de 2 heures de compilations. Betement, je pensais que amd64, c'etait pour des processeurs amd 64 bits et que pour les intel 64 bits, il fallait recompiler je ne sais quoi ( genre stage1)

 *Quote:*   

> y'aurait fallu faire:
> 
> Code:
> 
> linux32 chroot /ton/chroot

 

 Je ne connaissais pas cette commande. Je pense que c'est ce que je vais faire mais je quelques petites questions avant:

 - Est-ce que je peux le faire son systeme actuel  en dechrootant puis rechrootant avec linux32 puis tout reinstaller avec un "emerge -e qt" ou dois-je tout refaire ( decompressions stage et portage, emerge system, config..) ?

 - Une question bateau: Quel est l'interet de passer en 64 bits et surtout est-ce qu'une très grande proportion des applications que j'ai en 32 bits fonctionneront en 64 bits?

----------

## Alexis

 *bob1977 wrote:*   

> 
> 
>  Je ne m'en suis rendu compte qu'au bout de 2 heures de compilations. Betement, je pensais que amd64, c'etait pour des processeurs amd 64 bits et que pour les intel 64 bits, il fallait recompiler je ne sais quoi ( genre stage1)
> 
> 

 

oui amd64 ça veut dire x86_64, donc core2duo aussi, la raison est plus historique qu'autre chose: au début y'avait que amd qui faisait du x86_64, donc ça s'est appellé comme ça et ça a pas changé. C'est vrai que ça porte à confusion mais bon...

 *bob1977 wrote:*   

> 
> 
>  Je ne connaissais pas cette commande. Je pense que c'est ce que je vais faire mais je quelques petites questions avant:
> 
>  - Est-ce que je peux le faire son systeme actuel  en dechrootant puis rechrootant avec linux32 puis tout reinstaller avec un "emerge -e qt" ou dois-je tout refaire ( decompressions stage et portage, emerge system, config..) ?
> ...

 

si tu veux rester en 32bits, déchrooter puis rechrooter comme ça, ça *devrait* marcher. Ça me rappelle quand j'avais eu mon amd64, j'avais galéré à comprendre quel livecd prendre, quel stage prendre, etc... halalala

 *bob1977 wrote:*   

> 
> 
>  - Une question bateau: Quel est l'interet de passer en 64 bits et surtout est-ce qu'une très grande proportion des applications que j'ai en 32 bits fonctionneront en 64 bits?

 

Alors, l'intérêt est pas si simple: en 64 bits t'as un adressage mémoire plus simple pour des grosses quantités de mémoire, donc plus rapide: ça c'est vrai tout le temps. L'inconvénient est que les pointeurs par ex. sont plus gros, ce qui peut ralentir le code. Pour x86_64 vs i686 par contre t'as un gros avantage: le processeur a deux fois plus de registres, ce qui n'est vraiment pas du luxe et permet un gain de performances. J'ai jamais fait de comparatif poussé mais il parait qu'on gagne pas mal. Par exemple, geexbox vante que dans sa version 64 bits le décodage des vidéos est jusqu'à 15% plus rapide.

Pour ce qui est des applis, normalement tout marche: les seuls soucis que tu peux avoir sont avec les trucs binaires. Le x86_64 supporte de faire tourner des applis 32bits même en mode 64bits, t'as le support pour l'émulation. Par exemple, l'openoffice-bin que je lance une fois tous les 36 du mois est un binaire 32bits qui tourne en émulation. Pour le flash, pareil, comme c'est que du binaire faut passer par l'émulation 32bits. Bref, ça fait quelques années que je tourne en 64bits   et j'ai jamais eu à m'en plaindre (enfin si, peut être un peu au tout début, ce qui m'a vallu de banir flash de ma vie, pas malheureux). Il parait qu'on peut utiliser gnash pour le flash et compiler son openoffice aussi...

Un truc important à noter pour toi est que si tu veux passer en "amd64" faut recommencer l'install depuis le début: prendre un nouveau stage approprié, etc.

----------

## bob1977

Merci pour ton explication très claire. Je vais tenter le 64 bits et donc tout refaire. 

 Il y a neanmoins l'émulation 32 bits qui n'est pas claire dans ma tete: Est-ce le processeur qui le gère tout seul ou dois-je compiler un programme avec un useflag spécifique( multilib?)

----------

## Alexis

 *bob1977 wrote:*   

> Il y a neanmoins l'émulation 32 bits qui n'est pas claire dans ma tete: Est-ce le processeur qui le gère tout seul ou dois-je compiler un programme avec un useflag spécifique( multilib?)

 

Il suffit de prendre un "profile" multilib (qui est le défaut à ma connaissance) et d'activer le support pour l'émulation 32bits dans le noyau si tu le fais à la main.

----------

## bob1977

Je n'ai pas trouve de profile multilib ( à part si le useflag multilib n'est pas pris en compte quand on fait emerge system). De toute façon ,j'ai  compris le principe avec tes explications claires et précises. En tout cas, emerge system est parti et ça va etre bien plus rapide que sur l'athlon xp 2500 que j'avais jusqu'à présent.

----------

## YetiBarBar

Le multilib est présent par défaut sur les profils standard et desktop.

Sinon, pour éviter d'aller recompiler ton système en en entier, je te conseille de prendre ton stage3 ici et de prendre le plus récent.

----------

## bob1977

 *Quote:*   

> Le multilib est présent par défaut sur les profils standard et desktop. 

 

 Dans le doute, j'ai rajouté le useflag multilib dans le make.conf ( avant que tu me dises ça)

 *Quote:*   

> Sinon, pour éviter d'aller recompiler ton système en en entier, je te conseille de prendre ton stage3 ici et de prendre le plus récent.

 

 Trop tard. J'ai fais la compilation de kde cette nuit pour echouer sur kmail ce matin   :Very Happy:  https://forums.gentoo.org/viewtopic-t-660329.html

Mais merci pour le lien. Si je me suis encore trompé dans ma config et que je dois tout recommencé, j'irais prendre le stage là-bas.

----------

