Как собрать ядро ​​Rust с помощью загрузчика сборки (NASM) - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть простой двухэтапный загрузчик, написанный на NASM, и я хочу продолжить ядро ​​ОС, используя Rust.

Итак, я создал ночной проект Rust с Cargo и отключил std в файле src / main.rs. Сейчас я пытаюсь связать файлы сборки с проектом Cargo, но безуспешно.

Как мне скомпилировать и связать загрузчик NASM с ядром Rust?

1 Ответ

1 голос
/ 06 апреля 2019

Через пару часов я скомпилировал код.

Решением было (как предложил Майкл Петч) скомпилировать код сборки в статические .o файлы, а затем скомпилировать код ржавчины с использованием xargo и пользовательской цели. Я скомпилировал код Rust в виде статической библиотеки, а не двоичного файла, поэтому на выходе был объектный файл .a, а не исполняемый файл.

Затем я использовал gcc со скриптом компоновщика, чтобы связать вместе объектные файлы и вывести результат в виде файла ELF. После этого я использовал objcopy to с флагом -O binary, чтобы скопировать файл ELF в файл .bin. И наконец, я использовал dd для создания файла образа, с которого я мог бы загрузиться.

...