Nowe posty

Autor Wątek: Debian, źródła i kompilacja  (Przeczytany 13209 razy)

WizardNumberNext

  • Gość
Debian, źródła i kompilacja
« dnia: 2008-05-08, 10:40:23 »
Raczej stwierdzam fakt niż pytam.
Ciekawostką jest to, że źródła Debian'a zawierają błędy. Nie zmodyfikowane źródła są nie możliwe do skompilowania. Niezłe nie? Niestety prawdziwe. Spróbujcie skompilować xorg-server-1.1.1 z dystrybucji stabilnej (Etch) - jest to niemożliwe. Ja wprowadziłem już trzy modyfikację i dalej się wysypuje. Oczywiście mógłbym wymienić więcej takich pakietów źródłowych, ale nie widzę sensu.

  • Gość
Debian, źródła i kompilacja
« Odpowiedź #1 dnia: 2008-05-08, 10:58:33 »
a sprawdzałeś czy masz odpowiednią wersję kompilatora? języki programowania ewoluują i czasem się okazuje, że źródła wymagają nowszej wersji kompilatora. (a w przypadku bardzo starych źródeł - starszych wersji).
Oczywiście w takim przypadku nie ma najmniejszego problemu - np obok gcc 4.x można bez problemu zainstalować gcc 3.x i podczas konfigurowania makefile podać odpowiednią nazwę kompilatora, w zależności od tego co się ma w systemie zainstalowane

  • Gość
Debian, źródła i kompilacja
« Odpowiedź #2 dnia: 2008-05-08, 11:10:10 »
aha. i jeszcze jedna sprawa - z tego co mi wiadomo, to w Debianie pakiety źródłowe są zbudowane w taki sposób, że masz oryginalne źródło + osobno łatki debianowe (na pewno nie wszystkie programy są łatane przez Debiana, ale sporo jest). Zanim skompilujesz takie źródło, musisz nałożyć na nie te łatki.

WizardNumberNext

  • Gość
Debian, źródła i kompilacja
« Odpowiedź #3 dnia: 2008-05-08, 12:38:48 »
Sorry właśnie się poczułem jakbyś mi powiedział 'ty debilu'.
Ale dobra nie czuje się urażony zazwyczaj nie piszę posta na kilometr.
A taki bym musiał napisać, aby wszystko powiedzieć.
Ogólnie wygląda sprawa tak, że buduje wszelakie pakiety poprzez 'apt-build'.
A błędy nie biorą się z braku wystarczająco nowego kompilatora.
Np. jest źle zadeklarowana zmienna (tak że zmienna zależy od czegoś, ale też jest źle zadeklarowane).
Inny przykład: w pliku xxx.c występuje '#include "xxx.h"' albo '#include ' (nie pamiętam), którego nie ma w źródłach (przynajmniej w miejscu na które wskazuje #include), w trakcie instalacji nie jest tworzone dowiązanie symboliczne (to też naprawiłem).
Trzeci błąd: patrz błąd drugi.
Czwarty błąd: o tutaj już trudniej - tego nigdy nie umiałem naprawić:
make[5]: Wejście do katalogu `/var/cache/apt-build/build/xorg-server-1.1.1/obj-i686-linux-gnu/hw/xfree86'
...
gcc -mmmx -m3dnow -march=athlon-tbird -mcpu=athlon-tbird -mtune=athlon-tbird
-Os -finline-functions -funswitch-loops -fgcse-after-reload -fomit-frame-pointer -pipe
-s -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_I686_PREFETCH
-DHAVE_XORG_CONFIG_H -DXF86PM -DXFree86Server -DXFree86LOADER -Wall
-Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
-Wnested-externs -fno-strict-aliasing -D_BSD_SOURCE -DHAS_FCHOWN
-DHAS_STICKY_DIR_BIT -I/usr/include/freetype2 -I../../../include -I../../include
-I../../../Xext -I../../../composite -I../../../damageext -I../../../xfixes -I../../../Xi
-I../../../mi -I../../../miext/shadow -I../../../miext/damage -I../../../render
-I../../../randr -I../../../fb -Wall -o Xorg -rdynamic xorg.o  ../../dix/.libs/libdix.a common/libinit.a loader/libloader.a ./.libs/libosandcommon.a parser/libxf86config.a dummylib/libdummy.a dixmods/.libs/libdixmods.a ../../mi/.libs/libmi.a
../../xfixes/.libs/libxfixes.a ../../Xext/.libs/libXextbuiltin.a
../../GL/glx/.libs/libglx.a ../../GL/mesa/.libs/libGLcore.a -lpthread
../../render/.libs/librender.a ../../randr/.libs/librandr.a
../../damageext/.libs/libdamageext.a ../../miext/damage/.libs/libdamage.a
../../miext/cw/.libs/libcw.a ../../miext/shadow/.libs/libshadow.a ../../Xi/.libs/libXi.a
../../xkb/.libs/libxkb.a ../../composite/.libs/libcomposite.a ../../dix/.libs/libxpstubs.a
../../os/.libs/libos.a -ldl -lXfont -lXau -lfontenc -lXdmcp -lz dixmods/.libs/libxorgxkb.a -lm
../../dix/.libs/libdix.a(dispatch.o): In function `Dispatch':
dispatch.c:(.text+0x82b6): undefined reference to `ddxBeforeReset'
collect2: ld returned 1 exit status
make[5]: *** [Xorg] Błąd 1
make[5]: Opuszczenie katalogu `/var/cache/apt-build/build/xorg-server-1.1.1/obj-i686-linux-gnu/hw/xfree86'
Tak wygląda wycinek z 'apt-build install xorg-server-1.1.1 >/build 1>&2'

P.S. pociąłem linie aby dało się to czytać

P.S.2 Nie jestem Newbie - używam (bardzo aktywnie) Linux'a od 5 lat (w tym Debian od 3), wcześniej też używałem systemów unix-o-podobnych (np AmigaOS), co do źródeł to moja pierwsza łatka to łatka na jądro (linux-kernel) dla gcc4.0 (sam napisałem - jak się później okazało tak jak twórcy), pierwszy skonfigurowany i skompilowany projekt - Linux-Kernel.

  • Gość
Debian, źródła i kompilacja
« Odpowiedź #4 dnia: 2008-05-08, 14:45:23 »
Cytat: WizardNumberNext
Sorry właśnie się poczułem jakbyś mi powiedział 'ty debilu'.
hmm... jeśli to tak zabrzmiało, to sory, ale nie miałem tego na myśli.
podałeś tak mało szczegółów w swoim pierwszym poście, że chyba naturalne w takim przypadku było zwrócić uwagę najpierw na rzeczy podstawowe.
Ja się przyznam, że z paczek źródłowych Debiana kompilowałem może z dwa pakiety (kernel oraz moduł do sterowników nvidii), i problemów nie było, więc nie wiem jaka jest sytuacja z innymi pakietami (osobiście wolę instalować pakiety binarne, a źródła kompiluję dopiero gdy danego progsa nie ma w dystrybucji:P).

Co do błęda, który zamieściłeś w poście powyżej, to możliwe, że jest to powiązane z wcześniej wspomnianym nieodnalezieniem pliku nagłówkowego (oczywiście o ile oba błędy dotyczą tego samego źródła), albo upewnij się czy wszystkie zależności są w odpowiednich wersjach.

Ostatecznie pozostaje jeszcze zgłoszenie błędu Debianowi;)

WizardNumberNext

  • Gość
Debian, źródła i kompilacja
« Odpowiedź #5 dnia: 2008-05-08, 14:53:22 »
W tym rzecz, że w Debian takie sytuacje są jakimś nowym standardem. Wiecznie coś nie gra, czegoś nie ma itd. Ogólnie kompilacja ze źródeł to droga przez mękę.
To wyłapałem, oprócz ostatniego błędu, jest już naprawione (przeze mnie dla mnie).
Ostatni błąd właśnie staram się ominąć - zobaczymy rezultaty.
Ale i tak uważam, że coś tutaj nie halo niby wszystko gra, ale kompilacja jest prawie nie możliwa (chyba, że ktoś się zna).
Jak skończy N-ty raz kompilować (pewnie na błędzie) to zdam relację.

WizardNumberNext

  • Gość
Debian, źródła i kompilacja
« Odpowiedź #6 dnia: 2008-05-08, 15:09:01 »
Dodałem dodatkowe 'include' poprzez flagę '-I' - nie zadziałało.

lukaszn

  • Gość
Debian, źródła i kompilacja
« Odpowiedź #7 dnia: 2008-05-08, 15:36:16 »
Może czas na zmianę systemu ?

WizardNumberNext

  • Gość
Debian, źródła i kompilacja
« Odpowiedź #8 dnia: 2008-05-08, 16:03:30 »
A znajdziesz bardziej stabilny?
Bo już się raczej nie da!
Miałem (jeszcze głupi złom zabiera miejsce na dysku, ale już nie długo) Windows'a (XP Pro.)
Co do Linux:
Madrake
Red Hat
Aurox
PLD
Suse
Fedora Core
Debian 3.1 Sarge (r0 - r5)
Debian 4.0 Etch (r0 - r2)

Jakieś pytania??
Nie ma czegoś co by mnie bardziej mogło zadowolić.
Co do zaawansowania - wystarczy zwrócić uwagę na drobną różnicę pomiędzy Mandrake a Madriva (kilka lat).
Używałem również:
AmigaOS (1.3, 2.0.4, 2.0.5, 2.1, 3.0, 3.1, 3.9)
FreeBSD
OpenBSD

arctgx

  • Gość
Debian, źródła i kompilacja
« Odpowiedź #9 dnia: 2008-05-08, 16:26:34 »
A w takim razie jak opiekun trefnej paczki zbudował binarkę, która działa? Może by warto podpytać takiego weterana o flagi, wersje itp.?

chmooreck

  • Gość
Debian, źródła i kompilacja
« Odpowiedź #10 dnia: 2008-05-08, 16:31:06 »
Slackware
Gentoo
ArchLinux
... i wiele, wiele innych, których jeszcze nie spróbowałeś
No chyba, że błędy kompilacji są właśnie tym, czego szukałeś, bo nie pochwaliłeś się jaki masz wymagania ;-)

Cytat: WizardNumberNext
Nie ma czegoś co by mnie bardziej mogło zadowolić.
zamieniłbym na "Nie znam czegoś co by mnie bardziej mogło zadowolić." - to wydaje mi się bliższe prawdy.

I po drugie... skoro chcesz mieć taki stabilny, to dlaczego nie zdasz się na twórców paczek (tak, oni się raczej znają na kompilowaniu), tylko kompilujesz samemu ? To chyba proszenie się o mniej stabilny system...


Co do błędu: wynika on najprawdopodobniej z rozjazdu między nagłówkami biblioteki a biblioteką, bądź też nie dołączaniu biblioteki, w której jest ddxBeforeReset

WizardNumberNext

  • Gość
Debian, źródła i kompilacja
« Odpowiedź #11 dnia: 2008-05-08, 18:45:54 »
Stabilne jest dalej bo kompiluje z paczek źródłowych Debian'a (co najwyżej zmienię dwie, góra trzy opcje).
Optymalizacje mam takie, że sam się dziwię, że to się nie sypie, więc nie widzę tutaj jakichkolwiek problemów ze stabilnością.

chmooreck

  • Gość
Debian, źródła i kompilacja
« Odpowiedź #12 dnia: 2008-05-08, 19:50:41 »
Cytat: WizardNumberNext
Stabilne jest dalej bo kompiluje z paczek źródłowych Debian'a (co najwyżej zmienię dwie, góra trzy opcje).
To może wystarczyć...

Cytat: WizardNumberNext
Optymalizacje mam takie, że sam się dziwię, że to się nie sypie, więc nie widzę tutaj jakichkolwiek problemów ze stabilnością.
Jak to się ma do tego:
Cytat: WizardNumberNext
A znajdziesz bardziej stabilny?
Wybacz, ale trochę nie nadążam...

Offline mateo86

  • Users
  • Guru
  • *****
  • Wiadomości: 647
    • Zobacz profil
Debian, źródła i kompilacja
« Odpowiedź #13 dnia: 2008-05-08, 19:57:39 »
Jak koniecznie sam chcesz cos kompilowac wyprobuj gentoo - to jest stowrzone do kompilacji przez usera. ;)

lukaszn

  • Gość
Debian, źródła i kompilacja
« Odpowiedź #14 dnia: 2008-05-08, 20:17:36 »
Cytat: WizardNumberNext
A znajdziesz bardziej stabilny?
Bo już się raczej nie da!
Dobrze, że napisałeś "raczej" sam używałem Debiana kilka ładnych lat i zmieniłem na inną dystrybucje, tylko nie rozumiem irytacji po co wykrzykniki ?