# GCC - problem z kompilatorem

## radek-s

Witam.

Recznie kompiluje jądro z łatami, oraz iptables i iproute2.

Do tej pory używałem wersji 2.6.23.12, 1.4.0, 2.6.23 (odpowiednio dla jadra, iptables i iproute2).

Podkusiło mnie, żeby zaktualizować te pakiety.

Na nowym jadrze (2.6.29.6) i iptablesach (1.4.4) całość skryptów udostepniajacych net działa duzo gorzej i jest wiecej bugów (głownie z iptablesami) wiec postanowilem ponownie wrócic do starszych pakietów.

Aby to zrobic musialem je na nowo skompilowac.

Jednak niemiła spotkała mnie niespodzianka. Jadro na (w miedzyczasie zaktualizowanym systemie) nie chce sie kompilowac. Dograłem gcc w wersji 4.2.4 i jadro sie skompilowało.

Kolejny problem to iptablesy - jak kiedys pieknie wszystko sie kompilowało, tak teraz ze wszystkim problemy...

iptables wylozyl sie przy make na:

```
Extensions found: IPv4:account IPv4:ACCOUNT IPv4:condition IPv4:geoip IPv4:IMQ IPv4:IPMARK IPv4:ipp2p IPv4:ipv4options IPv4:IPV4OPTSSTRIP IPv4:layer7 IPv4:ROUTE IPv4:set IPv4:SET IPv6:IMQ IPv6:ROUTE

cc -O2 -Wall -Wunused -I"/lib/modules/2.6.23.12-LinuxBox/build"/include -I"/lib/modules/2.6.23.12-LinuxBox/source"/include -Iinclude/ -DIPTABLES_VERSION=\"1.4.0\"    -c -o libiptc/libip6tc.o libiptc/libip6tc.c

libiptc/libip6tc.c: In function ‘ipv6_prefix_length’:

libiptc/libip6tc.c:123: error: ‘const struct in6_addr’ has no member named ‘in6_u’

libiptc/libip6tc.c:127: error: ‘const struct in6_addr’ has no member named ‘in6_u’

make: *** [libiptc/libip6tc.o] Błąd 1

```

moje pytania: 

1. dlaczego zaleznie od wersji gcc jadro sie kompiluje (lub nie) na gcc 4.4.1 i 4.3.2 jadro 2.6.23.12 nie chce sie skompilowac

2. gdzie szukac przyczyny - z jakiej nie chce sie skompilowac iptables?

pozdrawiam!

*****

zainstalowałem wszystkie stabilne wersje gcc 

[1] x86_64-pc-linux-gnu-4.1.2 *

 [2] x86_64-pc-linux-gnu-4.2.4

 [3] x86_64-pc-linux-gnu-4.3.2

 [4] x86_64-pc-linux-gnu-4.4.1

na zadnej nie moge skompilowac iptables-1.4.0...co ciekawe poł roku temu kilka razy kompilowalem iptables i obyło sie bez zadnych problemow!Last edited by radek-s on Fri Sep 18, 2009 6:23 pm; edited 2 times in total

----------

## Belliash

iptables rozumiem tez kompilujesz na starym gcc?

bo sa ten kompilator w swoich wersjach wnosi rozne zmiany... programisci musieliby pisac software w ANSI C(++) aby dzialal zawsze i wszedzie, a ze tak sie nie dzieje, to program ktory kompiluje sie pod MSVC nie dziala na GCC i na odwrot, a jak widzisz nawet na tym samym kompilatorze ale innej wersji sa problemy (z MSVC zreszta tak samo)...

P.S. zmien temat na taki ktory bedzie wiecej mowil ...

----------

## radek-s

na 4 wersjach gcc pojawia sie ten sam błąd przy kompilacji iptables..

...

jakie pakiety moga miec jeszcze zwiazek z kompilacja?

moze glibc?

----------

## one_and_only

Na glibc to właśnie wygląda:

https://bugs.gentoo.org/show_bug.cgi?id=225505

----------

## tgR10

dlaczego nie uzyjesz hardened-sources i iproute2 z portage tylko sie piescisz z recznym paczowaniem ? a do tego hardened-sources ma grsec i pax jak potrzeba

angelina tgr # emerge --info|head -n1

Portage 2.1.6.13 (hardened/linux/x86/10.0, gcc-4.2.4, glibc-2.8_p20080602-r1, 2.6.29-hardened i686)

kernel iproute iptables sie kompiluje bez problemu

a jadro zaleznie od wersji gcc moze sie nie kompilowac bo chce uzywac czegos czego niema w starym gcc, mogla sie skladania zmienic (co sie zdarza np ostatnio w pythonie)

nieprzekompilowany glibc po updatowaniu linux-headers ?

cos sie czysto nie nalozylo ?

gdzies cos czytalem ze jadra powyzej 2.6.27 powinny byc juz kompilowane conajmniej z gcc 4.1.3 czy 4.2.3 jakos tak niepamietam tych numerkow dokladnie ...

----------

