Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: Zdublowane (?) nagłówki  (Przeczytany 5621 razy)

arctgx

  • Gość
Zdublowane (?) nagłówki
« dnia: 2007-02-05, 10:20:26 »
Mam Debiana etch i kompiluję jądro pobrane wprost z kernel.org, a nie z repozytoriów paczek. Eksperymentować zaczynam też z kompilacją innych programów.

Czy mogę bezpiecznie usunąć paczkę linux-kernel-headers i zastąpić je tymi z kernel.org?

Prosze o odpowiedź mimo tego, że już eksperymentuję. Usunąłem i kompilacja jądra nie idzie. Brakuje dla przykładu pliku asm/socket.h z /usr/include. Ale taki plik jest w samym katalogu ze źródłami w include/asm/socket.h. Czy nie wystarczy po prostu podlinkować kilku katalogów w /usr/include?

A może da się jakąś zmienną ustawić, by kompilator korzystał z nagłówków aktualnej wersji, a paczkę debianową przywrócić? Z nagłówków jądra, jak mówi opis, korzystają z kolei nagłówki z libc6-dev i zapewne tak dalej.

Kiedy pliki nagłówkowe występują w dwóch miejscach pod róźnymi wersjami, na ogół nie mam pojęcia, z której z wersji korzysta kompilator: czy w /usr/src/linux/include, czy w /usr/include. Pretekstem do napisania tego posta była próba kompilacji sterów fglrx dla Radeona. Skrypt make.sh wyrzucił brak pliku linux/version.h. Oznacza to, że szukał w tym pierwszym katalogu, czyli w źródłach. Tymczasem, gdyby szukał w drugim, to znalazłby, tyle że z numerem 2.6.18 (źródła w momencie pisania to 2.6.19).

A kompilator przy budowie jądra nie korzysta domyślnie z własnych nagłówków. Nie rozumiem... Dodanie -Iinclude do CFLAGS nie pomaga w kompilacji. Ale jeśli zrobię linki linux, asm i asm-generic w /usr/include, to już idzie, ale nie wiem czy dobre to dla budowy reszty programów.

ZipoKing

  • Gość
Zdublowane (?) nagłówki
« Odpowiedź #1 dnia: 2007-02-05, 11:27:50 »
2007-02-05 10:20:26 arctgx napisał:

 > Czy mogę bezpiecznie usunąć paczkę linux-kernel-headers i zastąpić je tymi z kernel.org?

To jest nawet wskazane

 > Czy nie wystarczy po prostu podlinkować kilku katalogów w /usr/include?

Nie, nic nie linkuj - kompilacja jądra musi się odbywać z jego własnymi nagłówkami.

 > A może da się jakąś zmienną ustawić, by kompilator korzystał z nagłówków aktualnej wersji, a
 > paczkę debianową przywrócić? Z nagłówków jądra, jak mówi opis, korzystają z kolei nagłówki z
 > libc6-dev i zapewne tak dalej.

Nie ustawiaj żadnych zmiennych (tj. CFLAGS, LDFLAGS itp) - jedyne, co musisz zrobić, to make menuconfig/xconfig/... make all itd. - jeżeli ustawisz którąś z tych zmiennych, rzeczywiście możesz mieć kłopoty z kompilacją

Następnie po kompilacji musisz przekopiować następujące katalogi z include źródeł jądra do /usr/include: asm-generic, asm-i386, linux - wszystko powinno chodzić

chmooreck

  • Gość
Zdublowane (?) nagłówki
« Odpowiedź #2 dnia: 2007-02-05, 19:57:57 »

arctgx

  • Gość
Zdublowane (?) nagłówki
« Odpowiedź #3 dnia: 2007-02-06, 15:05:58 »
Dostałem więc dwie sprzeczne odpowiedzi. Wpierw do ZipoKing: piszesz, bym nie nie linkował, a zrobił zwyczajne kopie katalogów na miejscu tych z paczki (nazwę je "glibcowymi" dla uproszczenia) debianowej. A przecież to na jedno wychodzi, czy do asm-i386 (dla przykładu) dostanę się linkiem, czy też wprost. Zauważ że napisałem, że już podczas kompilacji jądra używane są nagłówki glibcowe (chyba że zrobię jedną z powyższych przeróbek), a nie jego własne.

Według tego, co pisze wojtekm, powiniennem zostawić "glibcowe" nagłówki jądra. Wszystko byłoby OK, gdyby nie to, że nagłówki te pochodzą z innej wersji jądra niż kompilowana.

Czy komunikaty typu "unresolved symbol" dla jakiegoś sterownika, np. uhci-hcd czy snd-emu10k1, mogą wynikać właśnie z tego, ze jądro zbudowało się na nagłówkach ze starszej wersji?

Co ciekawe, nie pojawiają się one za każdym uruchomieniem.

A może jest tak, że nagłówki jądra z oficjalnej paczki są potrzebne tylko, gdy chcemy budować na nich glibce itd... ?

Czy może rozwiązaniem jest poczekać aż w dystrybucji pojawią się nowe nagłówki, a za nimi glibc, a póki co używać wersji jądra zgodnej z debianową, czyli 2.6.18?

Nie jest mi potrzebna pilnie najnowsza wersja jądra. Chciałbym jednak wiedzieć, co jest mi niepotrzebne i bardziej świadomie działać.