[Debian wheezy] GCC 4.6 werk niet op AMD-K6, 4.5 linken?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • benoni
  • Registratie: November 2003
  • Niet online
Probleem is Debian bug #629009: "Illegal instruction (program cc1)" error maar dan op een AMD-K6 processor.

Als ik zo even een 'Hello World' testje doe met GCC 4.5 dan compileert die wel probleemloos. Ik heb geprobeerd om met aptitude de GCC 4.6 library te deïnstalleren, maar dat laat de alarmbelletjes rinkelen omdat essentiële dependencies in wheezy aan 4.6 zijn gelinkt. Lijkt me dus beter om beide GCC pakketten in het systeem te laten staan, maar wat is eigenlijk de nette manier om (for the time being) gcc-4.5 als default te gebruiken voor de build-tools, m.n. make?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
config:~/LinuxPayLink/PayOut# cat /proc/cpuinfo 
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 5
model           : 8
model name      : AMD-K6(tm) 3D processor
stepping        : 12
cpu MHz         : 400.918
cache size      : 64 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr cx8 pge mmx syscall 3dnow k6_mtrr
bogomips        : 801.83
clflush size    : 32
cache_alignment : 32
address sizes   : 32 bits physical, 32 bits virtual
power management:
config:~/GCCTest# cat test.c
#include <stdio.h>
void main() {
     printf("Hello world\n");
}
config:~/GCCTest# gcc test.c -o test.o
gcc: internal compiler error: Illegal instruction (program cc1)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions.
config:~/GCCTest# gcc-4.5 test.c -o test.o
# (Geen foutmelding)

Acties:
  • 0 Henk 'm!

  • benoni
  • Registratie: November 2003
  • Niet online
Ocharme, klein stapje verder kijken:

code:
1
2
3
4
cd /usr/bin
ls -la gcc*
rm gcc
ln -s gcc-4.5 gcc


Nu even proberen... werkt 8)7

Addit:
Voor wie hetzelfde probleem heeft, je moet wel in /usr/bin de links naar alle 4.6 libraries aanpassen, dat is dit rijtje zo te zien:
code:
1
2
3
4
-rwxr-xr-x 1 root root 298212 Jul 15 05:52 /usr/bin/cpp-4.6
-rwxr-xr-x 1 root root 298212 Jul 15 05:53 /usr/bin/g++-4.6
-rwxr-xr-x 1 root root 298212 Jul 15 05:54 /usr/bin/gcc-4.6
-rwxr-xr-x 1 root root  28796 Jul 15 05:54 /usr/bin/gcov-4.6

[ Voor 100% gewijzigd door benoni op 08-10-2011 13:22 ]


Acties:
  • 0 Henk 'm!

  • mpol
  • Registratie: September 2002
  • Laatst online: 15-06 22:26

mpol

root@localhost

Ik ben niet zo bekend met Debian, maar gebruikt Debian geen update-alternatives? Als dat zo is heb je daarvan nu de config verneukt. Het lijkt me goed om dat even uit te zoeken en te fixen, anders gaat het misschien mis bij een update.

https://timelord.nl


Acties:
  • 0 Henk 'm!

  • benoni
  • Registratie: November 2003
  • Niet online
Mmm... ik heb inderdaad een map /etc/alternatives/. Daar staat bijvoorbeeld gcc niet in, wel een cc die gelinkt is naar /usr/bin/gcc. En dat is weer een link die ik met de hand heb aangepast zodat ie naar gcc-4.5 wijst.

Wat ik eigenlijk zou moeten doen is de handmatig aangepaste linkjes even terug aanpassen en dan met update-alternatives de libraries selecteren zodat die de directe links in /etc/alternatives zet... weer wat geleerd, brb :)

Mmm... met gebruik van update-alternatives moet je eigenlijk een ingewikkelder methode toepassen, die op zich ook weer problemen kan geven bij een upgrade :? Zie bijvoorbeeld deze discussie:
See /usr/share/doc/gcc/README.Debian why gcc is not managed via alternatives.
Dat brengt me op een andere nette methode, de omgevingsvariabele CC instellen voor je gaat compileren:
The most important practical implications are in the merging/linking
of object files built with different compilers; If you use the 4.1
C compiler, you should use the gcc-4.1 compiler driver for all your
work. When configuring sources, use

CC=gcc-4.1 ./configure <configure options> # bash
setenv CC gcc-4.1; ./configure <options> # csh
Ik denk dat ik voorlopig de linkjes weer terugzet, en voor de volgende upgrade terug verander... maar het is goed te weten hoe de officiële manieren werken om met die versieverschillen om te gaan. Dankjewel!

code:
1
2
3
4
config:/usr/bin# rm cpp; ln -s cpp-4.5 cpp
config:/usr/bin# rm gcc; ln -s gcc-4.5 gcc
config:/usr/bin# rm g++; ln -s g++-4.5 g++
config:/usr/bin# rm gcov; ln -s gcov-4.5 gcov

[ Voor 64% gewijzigd door benoni op 08-10-2011 14:43 ]