LINUX.ORG.RU

Debian amd64 компиляция


0

1

Решил собрать sage из исходников, но при компиляции получаю ошибку. Лог и сама ошибка:

mpih-add1-asm.S: Assembler messages:
mpih-add1-asm.S:46: Error: bad register name `%rsi,%rcx,8)'
mpih-add1-asm.S:47: Error: bad register name `%rdi,%rcx,8)'
mpih-add1-asm.S:48: Error: bad register name `%rdx,%rcx,8)'
mpih-add1-asm.S:49: Error: bad register name `%rcx'
mpih-add1-asm.S:53: Error: bad register name `%rsi,%rcx,8)'
mpih-add1-asm.S:54: Error: bad register name `%rdx,%rcx,8)'
mpih-add1-asm.S:55: Error: bad register name `%r10'
mpih-add1-asm.S:56: Error: bad register name `%rax'
mpih-add1-asm.S:57: Error: bad register name `%rcx'
mpih-add1-asm.S:60: Error: bad register name `%rcx'
mpih-add1-asm.S:61: Error: bad register name `%rax'
make[4]: *** [mpih-add1-asm.lo] Ошибка 1
 uname -a
Linux debian 2.6.32-5-amd64 #1 SMP Sun Oct 31 00:00:31 UTC 2010 x86_64 GNU/Linux
 gcc -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.4.5-4' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.4.5 (Debian 4.4.5-4) 
gcc-multilib установлен. Как мне указать gcc собирать sage под мое ядро?

Ответ на: комментарий от anon_666

Если нет - снести мультилибный компилер и поставить обычный,
оно вам не понадобится.

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

Именно так. Теперь начало собираться. Но как мне теперь сделать всю остальную систему 64-х битной, а не только ядро? И какие еще части кроме ядра и libc должны быть обязательно 64-х итными?

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

>Но как мне теперь сделать всю остальную систему 64-х битной

Переустановить. Впрочем, если лениво - можно откатиться на 32х ядро.

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

на 32 битном gcc с поддержкой 64 бит это требуется,
хотя непонятно что хочет ТС, собрать 32 битную версию или 64 битную,

с setarch i386 он соберет 32 битную
для 64 бит нужно или нативный компилятор или добавлять эти флажки


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

Мне надо для начала хотя бы просто собрать. А в рипозиториях стандартным идет 32-х битный компилятор. Выходит если я не хочу перустанавливать ОС, то должен добавлять эти флажки каждый раз, как я хочу 64-х битную версию программы? Или есть какой-то файл с флагами для компилиции, как в Gentoo?

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

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

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

изначально 32-х. sage в рипозиториях я не нашел, поэтому решил установить его из исходников. И даже в таком случае остается вариант собрать пакет, что бы потом легче было его удалить. Я как раз на эту тему мануал нашел. Поэтому думаю сейчас я систему не замусорю.

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

лучше поставить amd64 изначально,
чем делать «переезд» с 32 битной системы,

ваши текущие проблемы из-за того что нативная конфигурация gcc расчитана на 32 бита,
64 бит поддержка там есть, но из-за того что include файлы от glibc у вас в основном 32 битные, то лезет проблема с тем, что не было правильно #define __X86_64__ ,
так что приходится это делать в флагах gcc, там еще достаточно богатый потенциал для других ошибок, так что пожалейте свое время, если поставили 32 битную систему , то не надо ее превращать в 64, это возможно, но путь достаточно тернистый,
вам проще поставить amd64 , и если нужны 32 бита - то multilib версии пакетов.

sage или 32 битный собирайте ( про setarch i386 вам уже сказали, если ядро 64 битное )
или надо все его зависимости собрать как 64 бита, причем компилятор желательно не i386 использовать, а amd64 , 32 бита он умеет собирать, с флагом -m32



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

Спасибо за совет, будет время переустановлю на 64-х битную ОС.
setarch i386 помогла и sage уже собрался

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