Как связать стандартную библиотеку с кросс-компилятором?
Я хочу собрать 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 для самостоятельной компиляции.