Valahol olvastam, ha az ember maga fordít kernelt vanilla forrásból, akkor készítsen szimbolikus linkeket az "/usr/include"-ba az /usr/src/linux/include/valami"-re. Fordításnál bizonyos programok, ha jól emlékszem igénylik a "linux/config.h"-t és a "linux/version.h"-t, a kernelforrásban van, másoknak viszont a "net/if.h" stb. kell, ami nincs benne a kernelforrásban.
Most akkor milyen könyvtárakról kell linket készíteni vagy hogy van ez?
- 1521 megtekintés
Hozzászólások
> Forításnál bizonyos programok, ha jól emlékszem igénylik a "linux/config.h"-t > és a "linux/version.h"-t,
amik ilyeneket igenyelnek azok nagyvaloszinuseggel szinten kernelmodulok. ezeknel meg forditaskor a sok egyeb (szukseges) gcc-kapcsolo melle' meg kell adni a -I/usr/src/linux/include -t is, es akkor nem kell semmit se symlinkelni. sot, talan kicsit kulturaltabb, ha -I/lib/modules/`uname -r`/build/include-t ad meg az ember (ebbol a build egy symlink, az /usr/src/linux-`uname -r`-re, altalaban).
es akkor igy minden fasza lesz ;]
A.
- A hozzászóláshoz be kell jelentkezni
Ha a CFLAGS-be, vagy a CXXFLAGS-be teszem az opciót (-I/lib/modules/`uname -r`/build/include) az úgy jó? vagy inkább a Makefilet kell szerkeszteni?
- A hozzászóláshoz be kell jelentkezni
Ha sima'n gya'ri kernelt forditasz, es nincs semmi fennakadas, akkor nem kell semmi, make menuconfig; make dep, ... (2.4), vagy csak siman make (2.6). Kernelforditaskor ebbe az inkludosdiba _nem_ kell belenyulni, megcsinalja magatol es jol megcsinalja (a 2.4-es ilyenszempontbol szerencsesebb, mert ott forditas kozbe latszik, hogy mit csinal, milyen flag-eket hasznal, a 2.6-nal mar nem).
ha magadnak forditasz kernelforras-fa'n kivuli modulokat (csak ugy hobbibol, pl.), akkor kell ilyen vackolas, -I/usr/src/linux/include, vagy ekvivalens (+ fel tonna egyeb, -D__KERNEL__ -DMODULE, ...). Hogy ezt akkor hogy csinalod, az reszletkerdes, saja't modulnal egyszerubb talan maga'ba a makefile-ba beleirni ezeket.
Gyari kernelnel csak egy esetben kell beleavatkozni (pontosabban nekem csak egy esetben kellett eddig), amikor 2.4-est forditasz olyan gcc-vel, ami alapertelmezesben 4.0 vagy 4.1. ekkor explicite bele kell turni a makefile-ba es a CC=gcc-t atirni CC=gcc-3.4-re. de ez sem a cflags... so"t, vagyis asszem ext is lehet export CC=...-vel megoldani, csak akkor minden egyes (ujra)forditasnal ki kell adni es nem szabad elfelejteni (emiatt jobb talan a makefile-ba beleirni).
A.
- A hozzászóláshoz be kell jelentkezni
A /usr/src/linux symlinket kell módosítani, h az éppen aktuális kernelforrásra mutasson (pl. /usr/src/linux-2.6.x.x). Nekem legalábbis mást symlinkelni nem kellett még egyszer sem.
- A hozzászóláshoz be kell jelentkezni
A "make -O valahova target" módon meg lehet adni, ha azt akarom, hogy máshova buildelje a kernelt, mint ahol a forrás van. Aztán ugye külön symlinket csinálni /lib/modules/$(uname -r)/build és /lib/modules/$(uname -r)/source néven. Ha jól emlékszem, valamikor taszpaltaltam olyat, hogy némelyik programnak nem tetszett, hogy nem egy helyen van a forrás és a build. Taszpaltalt-e valaki ilyesmit? Van-e egyáltalán értelme máshova tenni buildet, mint ahol a forrás van?
- A hozzászóláshoz be kell jelentkezni
Csinált egyáltalán valaki olyat, hogy máshova tette a buildet, mint ahol a source van?
- A hozzászóláshoz be kell jelentkezni
Nem akartam emiatt új topikot létrehozni, így itt kérdezem meg.
Miért van, hogy egyszer létrejö, egyszer pedig nem az include/linux/config.h?
A válaszokat előre is köszi.
- A hozzászóláshoz be kell jelentkezni
Mit csináltál, hogy hol létrejön, hol nem?
Fedorád van?
- A hozzászóláshoz be kell jelentkezni
Nem, nem Fedorám van. És rohadtul nem értem, hogy miért jön létre egyszer és miért nem. Kerestem az okát a neten, de nem találtam rá semilyen leírást.
- A hozzászóláshoz be kell jelentkezni
A 2.6.19 óta a config.h obsolote lett azért.
--
A nyúl egy igazi jellem. Ott ül a fűben, de akkor sem szívja!
- A hozzászóláshoz be kell jelentkezni
A 2.6.20-ban meg nincs. A 2.6.19.2-es kernelem fordításakor létrejött.
Végső elkeseredésemben meg kell kérdezzelek titeket: mit tegyek, hogy létrejőjjön?
- A hozzászóláshoz be kell jelentkezni
Használj régebbi kernelt, vagy szedd ki a config.h-ra való hivatkozást a fordítandó modulból. Pl nálam nvidia így simán lefordult meg még 1 pár modul.
--
A nyúl egy igazi jellem. Ott ül a fűben, de akkor sem szívja!
- A hozzászóláshoz be kell jelentkezni
Ha 2.6.19 es sorozatból bemásolod a config.h-t oda ahol hiányolja, akkor működni fog.
______________________________________________________________________________________________
powered by Slackware 11.0 linux-2.6.20-smp - KDE 3.5.6
Fu-Si Amilo Pi1505 (Centrino Duo T2050-1G-120G-i945GM)
- A hozzászóláshoz be kell jelentkezni
Hello
Van egy jómagam által forgatott kernel. Alapból megvoltak hozzá a fejlécek, de azt hiszem sikerült eltűntetnem őket. Hogy tudom visszavarázsolni?
- A hozzászóláshoz be kell jelentkezni
Milyen fejlécek, hol voltak a fejlécek, és honnan törölted le őket?
- A hozzászóláshoz be kell jelentkezni
Valószínűleg letöröltem az /usr/src-ből a forrást. Azt nem tudom, hogy a saját kernel létrehoz -e egy header könyvtárat is telepítéskor, de az biztos nincs itt. Újra kéne forgatnom a kernelt talán?
- A hozzászóláshoz be kell jelentkezni
Elképzelhető, hogy újra kell fordítanod a configoddal, ugyanis a
/lib/modules/`uname -r`
-be a
make install && make modules_install
nem csak a forrást (fejállományok stb.), hanem a build-et is belinkeli, ami meg ugyanúgy a /usr/src/linux-ban van (vagy oda van linkelve).
Viszont én eddig csak ati fglrx illetve nvidia driver fordításánál tapasztaltam, hogy szükség van a build-re is.
____________________________________________________________
Slackware 12.1 - linux-2.6.25.1 - KDE 3.5.9
- A hozzászóláshoz be kell jelentkezni
Pont arra kell :) Akkor forgathatok kernelt, csak az a kérdés, hogy melyiket.
köszi
- A hozzászóláshoz be kell jelentkezni
Az /usr/src-be (pontosabban a /lib/modules/$(uname -r)/{source,build}-be, ami egy link szokott lenni az /usr/src/linux(-x.y.z)-re) csak akkor kell a kernel forras, ha kernel modult akarsz forditani.
Az /usr/include/-ban a headereket nem kell kernelforditasnal cserelni, azok vegig azok a headerek legyenek, amelyekkel a glibc fordult.
- A hozzászóláshoz be kell jelentkezni
Up
- A hozzászóláshoz be kell jelentkezni