Как связать стандартную библиотеку с кросс-компилятором?

Я хочу собрать xv6 на macOS, поэтому я установил кросс-компиляторный набор инструментов i386-elf-gcc и i386-elf-gcc из Homebrew Tap.

Проблема в том, что i386-elf-gcc не может связать стандартные библиотеки во время компиляции. Я протестировал на простом c-файле и получил следующую ошибку.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
    printf("d\n");
    return 0;
}

Ошибка:

> i386-elf-gcc --sysroot=usr/includes test.c
test.c:1:10: fatal error: stdio.h: No such file or directory
 #include <stdio.h>
          ^~~~~~~~~
compilation terminated.

1 ответ

Вот похожий вопрос. Я написал бы это в разделе комментариев, но у меня нет этой привилегии.

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

Одна из проблем заключается в том, что стандартные библиотеки, поставляемые с большинством наборов инструментов для разработки программного обеспечения, прибывают только в объектной форме...

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