2009-04-09 1 views
1

Я компилирую newlib для заказной платформы PowerPC без ОС. Чтение информации в сети. Я понимаю, что мне нужно реализовать функции заглушки в подкаталоге <newplatform> libgloss.с указанием машины libgloss при создании newlib для платформы на заказ

Мое замешательство в том, как это будет принято, когда я скомпилирую newlib. Это последняя часть аргумента --target для настройки, например. powerpc-ibm-<newplatform>?

Если это так, то, наверное, я должен использовать тот же --target при компиляции binutils и gcc?

Спасибо

ответ

1

Я портировал newlib и GCC сам тоже. И я помню, что мне не приходилось делать много нового, чтобы сделать работу newlib (большая часть работы была портирована GCC, gas и libbfd).

Просто пришлось изменить некоторые файлы о числах с плавающей точкой, отключить некоторые/SomeOtherStandard флагов POSIX, которые сделали это не использовать некоторые более сложные функции и написать код поддержки для longjmp/setjmp, что нагрузки и сохранить регистр состояния в буфера перехода. Но вы, конечно, должны сказать ему цель, используя --target, поэтому он использует правильную подкаталоги машин и еще много чего. Я помню, мне пришлось добавить небольшой код в configure.sub, чтобы узнать о моей цели и распечатать полную конфигурацию trible (cpu-manufacturer-os или аналогичный). Просто я обнаружил, что мне пришлось редактировать файл с именем configure.host, который задает некоторые параметры для вашей цели (например, обрабатывают ли операционные системы сигналы, поднятые на raise, или же сам модуль newlib должен имитировать обработку).

Я использовал this blog Энтони Грина в качестве ориентира, где он описывает портирование GCC, newlib и binutils. Я думаю, что это отличный источник, когда вы должны сделать это сами. В любом случае, весело читать. Потребовалось в общей сложности 2 месяца для компиляции и запуска некоторых развлекательных программ на C, для которых требуется только автономный C (с фиктивными функциями чтения/записи, которые записывались в терминал симулятора).

Так что я думаю, что количество работы, безусловно, управляемо. Тот, который сделал меня почти сумасшедшим, - это скрипты сборки libgloss. Я, конечно, был потерян в этих магаках autoconf :) Во всяком случае, я желаю вам удачи! :)

0

Отъезд Porting Newlib.

Цитата:

Я решил, что после невероятно сложной недели, пытаясь получить newlib портирована на моей собственной ОС, что я хотел бы написать учебник, описывающий требования к переносу newlib и как на самом деле это сделать. Я предполагаю, что вы уже можете загружать двоичные файлы откуда-то и что эти двоичные файлы скомпилированы C-кодом. Я также предполагаю, что у вас уже есть настройка интерфейса syscall. Зачем ждать? Давайте взломать!

+0

спасибо за ссылку. Я уже заметил эту страницу, но она не охватывает, как работают подкаталоги для работы в libgloss, что было моей путаницей – sparklewhiskers