# [gelöst] gcc error nach --update system

## oliver2104

Hallo,

spiel gerade mit SDL herum und hab ein Programm geschrieben -> grav2_sdl.c

habs bis jetzt problemlos mit dem folgenden Kommando kompiliert:

```

gcc grav2_sdl.c -Wall -Wno-switch -o grav2_sdl `sdl-config --cflags --libs`

```

wollte dann nach längerer Zeit mein System mal updaten und hab ein

emerge --update system ausgeführt.

Nach dem Update kann ich mein Programm nicht mehr kompilieren.

```

gcc grav2_sdl.c -Wall -Wno-switch -o grav2_sdl `sdl-config --cflags --libs`

```

gibt mir folgende Fehlermeldung (gekürzt)

```

/i686-pc-linux-gnu/bin/ld: /tmp/ccxDaxxc.o: undefined reference to symbol 'cos@@GLIBC_2.0'

/i686-pc-linux-gnu/bin/ld: note: 'cos@@GLIBC_2.0' is defined in DSO /lib/libm.so.6 so try adding it to the linker command line

/lib/libm.so.6: could not read symbols: Invalid operation

```

Vermute das Problem liegt an einem Python-Update verursacht durch das System-update

eselect python list, ergibt folgendes

```

Available Python interpreters:

  [1]   python2.7 *

  [2]   python3.2

  [3]   python3.3

```

aber egal welche Python-Version ich wähle, das gcc-Problem bleibt

bitte um HilfeLast edited by oliver2104 on Thu Jan 09, 2014 9:50 am; edited 1 time in total

----------

## Christian99

das hat nix mit python zu tun. du musst einfach nur zur libm linken wie dir dein linker schon sagt.

vermutlich hat das dein alter gcc automatisch gemacht, aber der neue nicht mehr. kannst ja mal in den changelogs suchen, da steht glaub ich oft auch wieso das gemacht wurde.

----------

## frank9999

sieht nach einem underlinking Problem aus, sieh mal hier:

https://blog.flameeyes.eu/tag/underlinking/

----------

## oliver2104

Danke für die Antworten,

python ist nicht schuld, war auch nur eine Vermutung.

musste nur für die Verwendung der Sourcecodezeile

```
 

#include <math.h>

```

die libm beim kompilieren explizit angeben.

die Kommandozeile sieht jetzt so aus:

```

gcc grav2_sdl.c -lm -Wall -Wno-switch -o grav2_sdl `sdl-config --cflags --libs`

```

damit funktionierts.

Warum es vor dem --update system ohne

```

-lm

```

ging und nachher nicht mehr, würd mich auch ein wenig interessieren.

das -- update system hat folgendes gemacht:

```

>>> emerge (1 of 9) sys-devel/gnuconfig-20130516

>>> emerge (2 of 9) sys-apps/coreutils-8.21

>>> emerge (3 of 9) sys-process/procps-3.3.8-r1

>>> emerge (4 of 9) virtual/man-0-r1

>>> emerge (5 of 9) dev-lang/python-2.7.5-r3

>>> emerge (6 of 9) dev-lang/python-3.3.2-r2

>>> emerge (7 of 9) sys-apps/file-5.15

>>> emerge (8 of 9) sys-devel/binutils-2.23.2

>>> emerge (9 of 9) sys-apps/gawk-4.0.2

```

vielleicht gibts da eine einfache Erklärung.

----------

