указывает на машину libgloss при сборке newlib для платформы на заказ - PullRequest
1 голос
/ 09 апреля 2009

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

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

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

Спасибо

Ответы [ 2 ]

1 голос
/ 10 апреля 2009

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

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

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

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

0 голосов
/ 10 апреля 2009

Выезд Портирование Newlib .

Цитата:

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

...