Скомпилировать простую программу hello-world c для mips netbsd

На прошлой неделе я пытался настроить компилятор, который может компилироваться в netbsd с архитектурой mips.

Я не могу найти в Интернете ничего, как это сделать. Все документы относятся к компиляции ядра с архитектурой, но не с программами.

Как это может быть так сложно....

хост - это netbsd amd64 машина

2 ответа

Установите компилятор соответствующим образом. Укажите на версию gcc в вашем TOOLDIR. В этом случае что-то вроде mips -netbsd-gcc. Обязательно убедитесь, что TOOLDIR находится на вашем пути, чтобы драйвер мог найти подходящего ассемблера, правильного загрузчика и подходящие библиотеки.

Взгляните на Makefile в любом из src/bin/* в качестве примера и прочитайте системные mk включаемые файлы, на которые есть ссылки (в src/share/mk)

Вообще говоря, цель состоит в том, чтобы иметь работающий кросс-компилятор и корневой каталог файловой системы для цели, все они установлены на вашем компьютере разработки. Целевой корень необходим, так как вам нужны всевозможные библиотеки для создания пользовательских приложений. Эти библиотеки должны быть скомпилированы для цели, а не для хоста.

Предполагая, что вы строите все из исходного кода, оно выглядит следующим образом:

  1. Выберите префикс для цепочки инструментов (скажем, /opt/mips) и другой префикс для корневой файловой системы цели (скажем, /opt/target). Все это на вашей машине разработки, а не на цели!

  2. Сконфигурируйте, соберите и установите кросс-компилятор для вашей цели. Это входит в префикс toolchain.

  3. Сконфигурируйте, соберите и установите ядро для вашей цели в префиксе root цели. Это должно установить необходимые заголовки разработки ядра, необходимые позже. Если вы можете установить такие заголовки без компиляции ядра, вам, конечно же, понадобится больше энергии.

  4. Сконфигурируйте, соберите и установите библиотеку C (скажем, glibc) для вашей цели в корневой каталог.

  5. Сконфигурируйте, соберите и установите все остальные библиотеки, которые нужны вашему пользовательскому приложению, в целевой корень.

  6. Наконец, настройте, соберите и установите приложение пользователя. После установки в целевой корень вы можете скопировать его в целевой каталог с тем же префиксом (скажем, /opt/target как предлагалось ранее).

    Обычно для установки в другой префикс - тот, который накладывается на ваш хост сборки (например, /usr) - вам нужно сделать несколько трюков, чтобы обмануть make install чтобы увидеть целевой префикс вместо вашего собственного. Простым подходом было бы иметь среду chroot на хосте сборки, где вы можете привязать-монтировать префикс (скажем, /usr) только для чтения, с возможностью записи (mount_union) наложение поверх него.

Когда вы создаете материал для цели, вам нужно передать правильные аргументы configure, конечно.

Другие вопросы по тегам