LINUX.ORG.RU

как собрать quagga для другой версии ядра (для другой машины)?


0

1

имею минимум знаний о линуксе. небольшой опыт в программировании (мелкие исправления кода).

линукс мандрива(рабочая станция). Linux blavla1 2.6.33.7-desktop-2mnb #1 SMP Mon Sep 20 19:00:25 UTC 2010 i686 i686 i386 GNU/Linux на ней quagga собирается без проблем лежат сорсники quagga 0.99 и хидеры kernel-2.4.37

далее

линукс неизвестной сборки (сервер). Linux blabla2 2.4.37 #33 SMP Пнд Май 20 10:47:44 YEKST 2013 i686 athlon i386 GNU/Linux с доступом рут но весь залоченый и обрезаный. на нём стоит ещё zebra 0.95a (само собой корявый)

необходимо собрать quagga на рабочей станции для сервера.(чтоб потом просто бинарники перекинуть)

как мне объяснить компилятору и/или какие ещё данные нужны чтобы он собрал quagga под этот линукс сервер?

я так понимаю если я просто соберу на рабочей станции то работать на сервере оно не будет.

статей перечитал море но максимум нашел компиляцию под другие платформы.

заране благодарен за помощь.

Если ядро 2.4.37, там поди и libc ещё древняя? Создайте на рабочей станции chroot, где будет нужная libc и всё прочие и пробуйте компилировать там.

mky ★★★★★
()
Ответ на: комментарий от mky

к сожалению я не могу творить на этом сервере беспредел. на нём ничего лишнего всё обрезано и запрещён доступ на запись потому я не могу на нём понаставить кучу софта для сборки. в том то и пакость что там ничего нет для разработки. иначе я бы не парился и там собрал.

okulski
() автор топика
Ответ на: комментарий от okulski

При чём там сервер? На рабочей странции создаёте chroot окружение, но с библиотеками той версии, что на сервере. Прочитайте про то, что такое chroot. chroot это новый корень файловой системы для группы процессов, там может быть свой libc, компилятор, kernel headers.

mky ★★★★★
()
Ответ на: комментарий от mky

теперь понятнее. почитаю. я же честно указал что знаю линукс минимально (я подумал что это процедура на серваке.) а можно точнее что конкретно нужно будет - «libc, компилятор, kernel headers» мож ещё что? как проверить это всё на соответствие?!

okulski
() автор топика
Ответ на: комментарий от okulski

Версии библиотек указаны в их названии, допустим на сервере:

# ls -l /lib/libc.so.6
/lib/libc.so.6 -> libc-2.2.93.so
Значит, на сервере glibc-2.2.93 (GNU libc). Это главная библиотека для Си программ, обычно по версии этой библиотеки можно определить версию дистрибутива и из этого дистрибутива взять и эту библиотеку и остальное. Если вы погуглите, то chroot обычно принято создавать средствами дистрибутива, устанавливая не в корневой, а в отдельный каталог список пакетов. Но это не обязательно, можно просто всё копировать, пакеты распаковывать вручную и всё складывать в chroot-каталог.

То есть создаёте /mnt/chroot. Там создаёте proc, dev, монтируете /proc в /mnt/chroot (через mount --bind) и /dev/ в /mnt/dev.

Потом наполняете chroot исполняемыми файлами, /mnt/chroot/bin/bash для начала и библиотеками /mnt/chroot/lib/*. Создаёте /mnt/chroot/root. После этого можно пробовать сделать (от root'а) ″chroot /mnt/chroot/ /bin/bash″ и получить работающий bash, но работающий в своём окружении, где другая, чем в основной системе версия libc, да и все программы (копилятор) могут быть другой версии.

Я описал всё очень кратко, в интеренете, даже по-русски достаточно более подробных описаний.

P.S. Если это Ideco, то раньше они базировались на RedHat 9.0 (не путать с RHEL) и компилятор gcc 2.95.4.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.