# Проблемы с gcc

## Anlorn

Прошу помощи, уже полдня сижу с проблемой. Все началось с того, что мне понадобился SVM и пришлось сменить свой SEMPRON на ATHLON X2 64.  После установки проца, сразу поменял make.conf, прописал в нем 

```
CHOST="x86_64-pc-linux-gnu"

CFLAGS="-march=athlon64 -O2 -pipe"

CXXFLAGS="${CFLAGS}"
```

Как я теперь понял, это было неверно т.к. система изначально была под 32?

После выполнил

```
emerge -avl binutils gcc glibc
```

Binutils сборалсы нормально, а gcc отказался собираться

```
checking whether the C compiler (gcc -march=athlon64 -O2 -pipe ) works... no

configure: error: installation or configuration problem: C compiler cannot create executables.

```

Теперь я не могу собрать gcc ни с параметрами под старый проц, ни под новый но на 32 бита. И соответственно поставить ничего нового на систему не могу. 

Как можно это исправить? Как мне правильно использовать мой 64 проц на 32 системе, без перехода 64битную версию генты?

----------

## f0rk

 *http://www.gentoo.org/doc/ru/gentoo-amd64-faq.xml wrote:*   

> 
> 
> Возможно ли обновление системы с x86 до amd64 посредством emerge -e world?
> 
>  Ввиду некоторых различий между системой, устанавливаемой на x86 и amd64, такой способ обновления невозможен. Пожалуйста выполните новую установку.
> ...

 

 *Quote:*   

> Как мне правильно использовать мой 64 проц на 32 системе, без перехода 64битную версию генты?

 

Просто восстановить старые настройки для 32 бит в /etc/make.conf.

Т.е. должно быть что-то типа:

```
CHOST="i686-pc-linux-gnu"

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

CXXFLAGS="${CFLAGS}"
```

А CHOST ни в коем случае так просто менять нельзя было.

 *Quote:*   

> Как можно это исправить?

 

Вариант я вижу только один - найти бинарный 32-х битный пакет binutils и поставить его через emerge -k.

----------

## Anlorn

Сейчас собираю, на другой машине binutils. Но на основной машине system собрана под SEMPRON то есть:

```
CHOST="i686-pc-linux-gnu"

CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
```

А мне надо для ATHLON 64 X2:

```
CHOST="i686-pc-linux-gnu"

CFLAGS="-march=athlon -O2 -pipe -fomit-frame-pointer"
```

Если я правльно понял, то мне восстановления работы gcc, достаточно поменять athlon-xp на athlon и запустить bootstrap.sh? А потом уже не спеша по мере необходимсоти пересобрать софт.

----------

## f0rk

 *Quote:*   

> Если я правльно понял, то мне восстановления работы gcc, достаточно поменять athlon-xp на athlon и запустить bootstrap.sh? А потом уже не спеша по мере необходимсоти пересобрать софт.

 

Нет, замена athlon-xp на athlon дает лишь настройку оптимизации gcc. Сейчас ваша система не работает по причине сломанных binutils. Запуск bootstrap.sh на данном этапе ничего не даст, опять таки все вылетит с ошибкой, что gcc не может создавать бинарные файлы. 

Нужно восстановить binutils, а потом уже можно собирать все, что угодно.

Кстати, имеет смысл добавить еще -msse3 в CFLAGS.

----------

## asm64

 *f0rk wrote:*   

>  *http://www.gentoo.org/doc/ru/gentoo-amd64-faq.xml wrote:*   
> 
> Возможно ли обновление системы с x86 до amd64 посредством emerge -e world?
> 
>  Ввиду некоторых различий между системой, устанавливаемой на x86 и amd64, такой способ обновления невозможен. Пожалуйста выполните новую установку.
> ...

 

Можно методом CHROOT попробовать.

http://ru.gentoo-wiki.com/HOWTO_%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_32-%D1%85_%D0%B1%D0%B8%D1%82%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0%B0_%D0%BF%D0%BE%D0%B4_AMD64

http://www.gentoo.org/proj/en/base/amd64/howtos/index.xml?part=1&chap=2

по аналогии наоборот - вместо "linux32 chroot /mnt/gentoo32" -> "linux64 chroot /mnt/gentoo64".

----------

## f0rk

 *asm64 wrote:*   

> 
> 
> Можно методом CHROOT попробовать.
> 
> http://ru.gentoo-wiki.com/HOWTO_%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_32-%D1%85_%D0%B1%D0%B8%D1%82%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0%B0_%D0%BF%D0%BE%D0%B4_AMD64
> ...

 

Ну так это практически и есть переустановка..  :Smile: 

----------

## Anlorn

Возникла проблема, собрал пакет, перекинул но комп, но при попытке выполнить

```
emerge -K binutils
```

Получаю

```
!!! All ebuilds that could satisfy "sys-devel/binutils" have been masked.

!!! One of the following masked packages is required to complete your request:

- sys-devel/binutils-2.18-r1 (masked by: )

For more information, see MASKED PACKAGES section in the emerge man page or

refer to the Gentoo Handbook.

```

Смушает строка (masked by: ) , непонятно почему пакет замаскирован?

----------

## f0rk

Попробуйте:

```
emerge -K1 =sys-devel/binutils-2.18-r1 
```

----------

## Anlorn

Не помогло, тоже пишет, что пакет маскирован.

----------

## f0rk

 *Anlorn wrote:*   

> Не помогло, тоже пишет, что пакет маскирован.

 

Хм.. А если попробовать на время добавить его в /etc/portage/package.unmask ?

----------

## Anlorn

Я еще раньше добавил, но это не помогло.

----------

## Anlorn

Да

----------

## f0rk

 *Anlorn wrote:*   

> Я еще раньше добавил, но это не помогло.

 

покажите emerge --info

----------

## Anlorn

```
Portage 2.1.4.4 (default-linux/x86/2006.1/desktop, gcc-4.1.2, glibc-2.6.1-r0, 2.6.24-gentoo-r3 i686)

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

System uname: 2.6.24-gentoo-r3 i686 AMD Athlon(tm) 64 X2 Dual Core Processor 3800+

Timestamp of tree: Fri, 25 Apr 2008 01:45:01 +0000

app-shells/bash:     3.2_p17-r1

dev-lang/python:     2.4.4-r6

dev-python/pycrypto: 2.0.1-r6

sys-apps/baselayout: 1.12.11.1

sys-apps/sandbox:    1.2.18.1-r2

sys-devel/autoconf:  2.13, 2.61-r1

sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10

sys-devel/binutils:  2.18-r1

sys-devel/gcc-config: 1.4.0-r4

sys-devel/libtool:   1.5.26

virtual/os-headers:  2.6.23-r3

ACCEPT_KEYWORDS="x86"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config"

CONFIG_PROTECT_MASK="/etc/env.d /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/texmf/web2c /etc/udev/rules.d"

CXXFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"

DISTDIR="/usr/portage/distfiles"

FEATURES="distlocks metadata-transfer sandbox sfperms strict unmerge-orphans userfetch"

GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"

LANG="ru_RU.UTF-8"

LC_ALL=""

LINGUAS="ru en"

PKGDIR="/usr/portage/packages"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY="/usr/local/portage"

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

USE="X alsa arts berkdb cairo cdr cli cracklib crypt cups dbus dri dvb dvd dvdr eds emboss encode esd fam firefox fortran gdbm gif gpm gstreamer gtk hal iconv ipv6 isdnlog jpeg kde ldap mad midi mikmod mp3 mpeg mudflap ncurses nls nptl nptlonly ogg opengl openmp oss pam pcre perl png ppds pppd python qt3 qt4 quicktime readline reflection sdl session spell spl ssl tcpd truetype unicode vorbis win32codecs x86 xml xorg xv 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 auth_digest authn_anon authn_dbd 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 dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so 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="ru en" USERLAND="GNU" VIDEO_CARDS="apm ark chips cirrus cyrix dummy fbdev glint i128 i740 i810 imstt mach64 mga neomagic nsc nv r128 radeon rendition s3 s3virge savage siliconmotion sis sisusb tdfx tga trident tseng v4l vesa vga via vmware voodoo"

Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LDFLAGS, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

```

----------

## f0rk

Странно, вроде все в порядке.. Есть еще конечно жесткий вариант "в лоб"- выпотрошить пакет bintutils..tbz2  и разложить файлы из него куда надо с перезаписью.. Правда сам так делал только с пакетом portage поэтому не знаю, какие могут быть здесь "побочные" эффекты.

----------

## Anlorn

Сорри за возможно ламерский вопрос, но как узнать, что куда класть?

----------

## f0rk

ну если переименовать пакет из tbz2 в tar.bz2 и распаковать, то после распаковки будут папки usr etc и т. д.

их и надо скопировать с заменой в корень.

----------

## Anlorn

Все. Это я ступил, когда копировал tbz2 опечатался, сейчас исправил ошибка. И пакет, через -K собрался, все заработало. Хотя странно, что emerge    ругался на маскировку, а не отсутствие файла. Спасибо огромное   :Very Happy:  .

----------

## f0rk

Да не за что, рад помочь!   :Smile: 

----------

## asm64

 *f0rk wrote:*   

>  *asm64 wrote:*   Можно методом CHROOT попробовать. 
> 
> Ну так это практически и есть переустановка.. 

 

Так, на всякий случай сказал, чтоб человек с разделами на диске не парился...

----------

