Титла: Slackware kernel info Публикувано от: ntenev в Jun 25, 2004, 12:24 Въпроса ми е следния:
В Slackware има два пакета които се казват съответно kernel-headers и kernel-source. Знам че когато се инсталира компилирания kernel (kernel-ide-x.x.x)от дистрибуцията, пакета kernel-headers е необходим за (пре)компилиране на различни приложения търсещи файлове от там, но ... kernel-headers слага фаиловете в /usr/include/linux/, докато kernel-source (където също ги има) стои в /usr/src/linux-$version.$of.$kernel и тъй като единия пакет носи нужните *.h файлове не виждам причина да трябва да инсталирам и двата (+/- 4MB) но дали make и gcc ще се сетят да търсят в /usr/src/linux/include/linux/ вместо в /usr/include/linux/. Предполагам че това може да се даде като опция в някой conf файл ( кой ? ). Знам че символни връзки от типа на: ln -s /usr/src/linux/include/linux/ /usr/include/linux/ ln -s /usr/src/linux/ /usr/src/linux-x.x.x/ (което си се прави от install скрипта на kernel-source ) ще са достатъчни за да работя нормално, но ми се иска ако мога да го подам като default опция. Така че ако някой знае кой е нужния файл, ще съм благодарен ако го каже. Това е Поздрави Н. Тенев Титла: Slackware kernel info Публикувано от: в Jun 25, 2004, 14:52 Макар да не разбрах много какво имаш точно предвид под default.
Ако компилираш от команден ред може да ги сложиш с опция -I <дир> Ако искаш може и в Makefile да ги сложиш като опция на компилатора. Титла: Slackware kernel info Публикувано от: ntenev в Jun 25, 2004, 15:02 tuxbg 10x . Наистина с това default звучи тъпо. Идеята ми беше:
има ли conf файл в който да му задам да търси в /usr/src/linux/include/linux/ без да ми се налага всеки (първи) път да го добавям в маке файла или да го подавам като -i опция ... не че ще ми е проблем ... интересно ми е Поздрави Н. Тенев Титла: Slackware kernel info Публикувано от: ntenev в Jun 25, 2004, 15:07 Или казано още по-ясно (надявам се)
gcc и make имат ли някакви conf файлове ? Титла: Slackware kernel info Публикувано от: Филип Бонев в Jun 25, 2004, 15:31 Здравей едните файлове са тези с който е компилирана системата тоест kernel-headers и по прицнип трябва да се ползват за компилация на програми другите са от в самия кърнел(kernel-source). И тъй като може да се различава кърнел сорс хедърите с тези който са в kernel-headers по добре да си ги инсталираш. Така имаше някакви мисли по този въпрос на Линус Торвалдс(извинете ме ако му бъркам нещо името) и той препоръчва да се пазат хеадърите с който е компилирана glibc библиотеката тоест в нашия случай преполагам kernel-headers.
Ако нещо греша моля да ме поправите. П.П. : Това за Линус го четох докато си правих Linux from scratch. Така че преполагам че е достоверно. Титла: Slackware kernel info Публикувано от: в Jun 25, 2004, 15:33 Имат ама те не ти тряба да пипаш там за сега.
Слагай си го в Makefile, като опция на компилатора и ползвай make. Титла: Slackware kernel info Публикувано от: dafo в Jun 25, 2004, 15:57 Някой софтуер иска повече от сорса - например драйверите на nVIDIA. В по-голяма част от случаите само kernel-headers са достатъчни. И връзки също вършат работа - /usr/include/linux -> /път_до_kernel_source/linux/include/linux и /usr/include/asm -> /път_до_kernel_source/linux/include/asm/подходяща_платформа_asm
Пиша леко по памет, защото съм ги разкарал и двата пакета, поради липса на дисково пространство. За ядро 2.6.x ти трябва и /usr/include/asm-generic връзка. Титла: Slackware kernel info Публикувано от: ntenev в Jun 25, 2004, 16:25 tuxbg 10х отново ... ама сега вече ме провокираш и за въпроса "Защо да не пипам ?" Ако имаш някакъв линк с полезна информация, може да ми го дадеш, ако искаш, да зачета за да не тормозя форума с подобни питания
philip_bonev - Принципно си прав. Но в Slackware нешщата са подредени по следния начин (KB валидни за 2.4.26): 3 пакета kernel-headers - 4700 KB kernel-ide - 1880 KB kernel-modules - 11140 KB ------------ 17720 KB 1 пакет kernel-source - 171380 KB Идеята каква е: С първите 3 пакета получаваш работещ кернел + модули + *.h файловете необходими за компилиране на други приложения. Добър вариант с недостатъка че 1. vmlinuz (bzImage) е компилирано за i486 процесор 2. vmlinuz (bzImage) е компилирано за 1 процесор ( без multi processor support) 3. ако ти трабва модул, който не е в kernel-modules - увисваш (истината е че досега не ми се е случвало, но това не е причина да го пренебрегвам като възможност). Ако имаш kernel-source, то имаш пълния код на ядрото + config файла с опциите за получаване при компилация именно на пакетите kernel-ide и kernel-modules. *.h файловете които получаваш със kernel-headers са абсолютно идентични със *.h файловете които получаваш със kernel-source (всъщност те са взети именно от него) със разликата че в единия случай се слагат в /usr/include/linux/ (при kernel-headers) а в другия - /usr/src/linux-x.x.x/include/linux/ (при kernel-source). Това е именно за да се спази съвета на Линус да се пазят *.h файловете kernel-а (glibc библиотеките са друг случай - отделни пакети и са по-скоро свързани с gcc компилатора отколкото с kernel-а) При мен нещата изхождат от следната постановка: До едно известно време използвах slackcheck на Георги Чорбаджийски за обновяване на пакети, използвайки само готовите прекомпилирани tgz файлове на slackware-current и не съм имал никакви проблеми (за да не останат някои хора с грешно впечатление - slackcheck само обновява съществуващите пакети + няколко по-специфични проверки, но пак си трябва четене, ако има по-сериозни промени защото при slackware няма зависимости и автоматични инсталации на такива). Сега обаче ще имам двупроцесорна PIII машина и затова ще ми трябват 3-4 нови опции в ядрото, които немогат да са модули. Така че че ми трябват пакетите: kernel-source (за да мога да ги включвам и прекомпилирам) и (евентуално) kernel-modules (за да си спестя make modules и make modules install (то не че печеля кой знае какво ) ) И след като ще имам *.h файловете от kernel-source не виждам защо да ги слагам още един път и със kernel-headers (ех как ми се свидят тези 4,7 MB ). Както казах и по-горе това не е точно проблем и решения поне 2 (поне за толкова се сещам). Мога да направя символни връзки, мога и да си имам kernel-headers, пък kernel-source да го тегля, компилирам и след това - изтривам. Така де ... не компилирам всеки ден Може и (както каза tuxbg) със опции към configure, make или gcc. Аз пък искам да е със опция в conf файл, да го направя един път и после да обновявам само модули и source (+ компилиране) когато ми е необходимо, но да не се сещам за това когато компилирам някакви други програми ... глезотия общо взето Поздрави Н. Тенев Титла: Slackware kernel info Публикувано от: Филип Бонев в Jun 25, 2004, 20:13 Като говорех за това да се инсталират хедърите имах предвид този пост(някъде) на Линус Торвалдс:
Имаше и малко коментари след това но ги орязах, за пълно разбиране имаго в linuxfromscratch 5.1. Малко се разрових и го намерих. До сега бях със слак и съм запознат с дистрибуцията. Мисълта е че с каквито хедъри е компилиран glibc с такива трябва да се копилира и останалото. А пък ако си инсталнеш 2.6.7 примерно и искаш да добавиш външен драйвер той си намира кернела и каквото му тряба от сим линк-а в /lib/modules/2.x.x/build Мисля, че щом Линус Торвалдс казва, че така е по правилно - би трябвало да е Все пак човека е написал основата. |