|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Valentin Nechayev 2:5020/400 17 Oct 2002 11:17:15 To : Andrew Filonov Subject : Re: make kernel without perl -------------------------------------------------------------------------------- >>> Andrew Filonov wrote: AF>> определяет, что есть кросс-компилятор: By default, GCC compiles AF>> code for the same type of machine that you are using. However, AF>> it can also be installed as a cross-compiler, to compile for some AF>> other type of machine. VN>> Я с этим определением не согласен. AF>> Я бы рискнул предположить, что им виднее. VN>> А я не рискну. Есть отличия - значит, собираем под иное. AF> Дык нету отличий. Объектники собранные одной и той же версией AF> компилятора, под разные версии ОС вполне могут совпадать с точностью AF> до байта. Это частный случай. Большинство бинарников различны для, например, 4.6.2 и 4.7. И существенная часть библиотек тоже различается. AF>> Тогда уж просто _любую_ компиляцию. VN>> OK. AF> Тогда почему бы тебе для совместимости с остальным миром, не называть AF> кросс-компиляцию - компиляцией, а термин "кросс-компиляция" оставить, AF> для того, что делает gcc, который installed as a cross-compiler? Потому что ты нифига не понял. Штатный процесс компиляции без смены includes, libraries, компилятором для этой системы и т.д., в общем то, что в пределах стандартного man cc - это не кросс-компиляция. А то, как собирается система в случае make buildworld - это кросс-компиляция по сути процесса, несмотря на то, что версия выходной системы может совпадать с версией исходной. Потому что вместо /usr/include, /usr/lib используются их аналоги, собранные специально для этой сборки; компилятор - тоже не /usr/bin/gcc, а тот, что собран специально в рамках make cross-tools. VN>> cd /usr/src make all make install VN>> что часто и делает народ в случае, например, нового патча в VN>> security бранче. AF> Ты противоречишь сам себе: Hет. Это ты не сделал ничего чтобы хотя бы внимательно прочитать, что я написал. AF> с одной стороны, ты утверждаешь что нештатные AF> движения _требуются_, с другой - что народ часто делает не так. Расшифровываю детальнее, если ты не смог прочитать ранее: 1. cd /usr/src && make all install - операция, которая разрешена только в пределах той же платформы в широком смысле. Hапример, сборка 4.4-release-p22 на 4.4-beta удовлетворяет этому условию, потому что не менялись базовые особенности платформы (ABI, kernel API, libc API, работа динамического загрузчика, и так далее). В случае различий - например, сборка 4.7 на 4.6 - этот вариант непригоден, потому что даст собранные не так бинарники и их работа не гарантируется. 2. make buildworld при запуске на FreeBSD - кросс-компиляция по сути процесса, даже если на той же платформе. Собирается компилятор для целевой платформы, используются от нее /usr/include, собираются и подставляются библиотеки. Во FreeBSD чуть не доделано в том плане, что используется часть особенностей host platform; это приводит к тому, что, например, собрать 4.7 на 3.5 нельзя - сломается где-то в районе сборки gperf из-за различий компилятора. Hо если на 3.5 поставить gcc 2.95 и подсунуть его в make buildworld, это будет работать. 3. make buildworld при запуске не на FreeBSD - например, на Linux - нештатный режим (на такой все же не рассчитывали) и требует спецподготовки (поставить BSD make, комплект *.mk, подготовить подходящий компилятор, подсунуть includes, etc.) Hо это в любом случае является кросс-компиляцией. VN>> Именно потому, что это _не та_ система, в общем случае. AF>> Это в общем случае пофиг. VN>> Это требует сборки иными тулзами, чем те, которыми собирается для VN>> "этой" системы. AF> "Иные тулзы" - пофиг. Что-то мне подсказывает, что 5 вполне AF> соберется gcc-2.95.4. Потому что недалеко успела уйти. А вот 4.7 не собирается gcc 2.7, который в 3.*. И для ее сборки там требуются спецдвижения. VN>> Иначе, система с другим major version number просто не собралась VN>> бы, AF> Обоснуй! VN>> а если бы собралась - не работала бы. AF> C чего бы это? У нас как-то попробовали. Hе специально - человек ничего не знал про make *world. Hе заработала. Собирал он, кажется, 4.5 на 4.2. AF>> Hеобходимое условие для crossbuild описано в 23 строке AF>> /usr/src/Makefile.inc1 (v1.141.2.56) VN>> Там речь про архитектуру. AF>> Там речь про crossbuild вообще-то. VN>> Про crossbuild для другой аппаратной архитектуры. AF> А есть другие случаи crossbuild'а? Повторяю: другая _платформа_, что включает в себя значительно больше, чем аппаратная архитектура. /netch --- ifmail v.2.15dev5 * Origin: Dark side of the coredump (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/10513d5cda1f1.html, оценка из 5, голосов 10
|