связь между инструментами кросс-компиляции и ОС - PullRequest
1 голос
/ 29 марта 2011

HI, All,

У меня есть вопрос, касающийся инструментов кросс-компиляции (компилятор, сборка, компоновщик и т. Д.) И операционной системы.давайте возьмем ELDK и ядро ​​Linux в качестве примера.

Из вики и учебника ibm (https://www6.software.ibm.com/developerworks/education/l-cross/l-cross-ltr.pdf), настроенный кросс-компилятор должен знать о некоторых определенных целевых заголовочных файлах ОС, а также о новом libc и т. Д. Однако ядро ​​целевой ОС также будет кросс-скомпилированочерез кросс-компилятор, например, eldk, на целевой встроенной плате или машине.

Итак, кто на первом месте - ОС или кросс-компилятор?

Спасибо за любые разъяснения !!

Ответы [ 2 ]

2 голосов
/ 29 марта 2011

Самая первая версия любой ОС должна быть либо кросс-компилированной, либо (для очень простой ОС, как в старые времена) написана от руки в машинном коде. Затем более сложные исполняемые файлы могут быть нацелены на более простую ОС и, возможно, использоваться для создания более сложной ОС (первоначальная компиляция называется «начальной загрузкой», процесс компиляции ОС называется «самостоятельным размещением»). Некоторые ОС становятся сам хостинг, некоторые никогда не делают, если они не предназначены для такого уровня сложности.

В любом случае, я не уверен на 100%, что вы спрашиваете. Многие ОС для небольших устройств не предназначены для работы с файловой системой и другими сложностями, необходимыми для размещения компилятора, поэтому они никогда не смогут компилировать свой собственный код, и кросс-компиляция всегда необходима. Библиотеки, используемые кросс-компилятором, вполне могли быть кросс-компилированными; конечно же, заголовки всегда совпадают с заголовками целевой системы.

0 голосов
/ 30 марта 2011

Ни ядро, ни кросс-компилятор пользовательского пространства не стоят на первом месте.

Как правило, ядро ​​ОС не компилируется с тем же кросс-компилятором, который вы используете для пользовательского пространства.Вместо этого вы компилируете ядро ​​и библиотеку C с помощью кросс-компилятора "bootstrap", который предназначен для компиляции вещей, запускаемых непосредственно на аппаратном обеспечении без помощи ОС, и который настроен так, чтобы не искать уже существующий libc.В этот момент у вас есть ядро ​​и библиотеки ядра, и вы можете использовать их для создания обычного кросс-компилятора в пользовательском пространстве.

(Linux в некотором смысле является исключением из этого на стороне ядра, поскольку есть немаловключенного хакера, который позволяет использовать компилятор пространства пользователя для компиляции ядра Linux. Это совсем не хороший пример «нормальности». Но даже там кросс-компилятор на первом месте, вам не нужно компилировать ядро ​​дляиметь возможность включать заголовочные файлы ядра.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...