我目前正在尝试为aarch64-linux-gnu
目标编译自己的gcc 9.1.0交叉编译器。我使用了本教程:https://wiki.osdev.org/GCC_Cross-Compiler
gcc和g ++编译器的编译进度似乎已完成,没有错误,但是当我尝试使用命令libgcc
编译make all-target-libgcc
时,总会遇到以下错误:
In file included from ../../../gcc-9.1.0/libgcc/gthr.h:148,
from ../../../gcc-9.1.0/libgcc/libgcov-interface.c:27:
./gthr-default.h:35:10: fatal error: pthread.h: No such file or directory
35 | #include <pthread.h>
| ^~~~~~~~~~~
compilation terminated.
g++ --version
在我的机器上打印:
g++ (GCC) 9.1.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
我对gcc
的配置命令是:
../gcc-9.1.0/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --without-headers
使用:
export TARGET=aarch64-linux-gnu
export PREFIX=/opt/aarch64-linux-gnu
我会忘记什么?
答案 0 :(得分:0)
从GCC安装手册:
为了构建GCC,C标准库和标头必须为 对于所有目标库都存在的目标变体 内置的(不仅是宿主C ++编译器的变体)。
因此,您需要aarch64的libc。
如果您想自己构建它,Preshing在该主题上有一个不错的article,尽管我没有完整阅读,但是仍然推荐。他甚至还有一张同时提到pthread.h
和libgcc.a
的图片。
AFAIK,GCC可以选择到newlib
源的符号链接,并在使用目标库构建完整的交叉编译器的过程中自动构建它。不确定Glibc。