我正在尝试为交叉编译构建gcc(主机 - Mac OS X,目标 - ARM),这是我之前问答的链接(How to make ARM cross compilation on Mac OS X (error: invalid listing option `r' - cross compiling error))
我需要构建libgcc,所以我运行命令make all-target-libgcc
,一切似乎都没问题,直到我遇到这个错误:
/Users/smcho/Desktop/gcc/gcc-build-arm/./gcc/xgcc -B/Users/smcho/Desktop/gcc/gcc-build-
arm/./gcc/ -B/opt/cross/arm-elf-eabi/bin/ -B/opt/cross/arm-elf-eabi/lib/ -isystem
/opt/cross/arm-elf-eabi/include -isystem /opt/cross/arm-elf-eabi/sys-include -g -O2 -mthumb -
O2 -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-
qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fno-
inline -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fno-inline -I. -I. -
I../../.././gcc -I../../../../gcc-4.8.3/libgcc -I../../../../gcc-4.8.3/libgcc/. -
I../../../../gcc-4.8.3/libgcc/../gcc -I../../../../gcc-4.8.3/libgcc/../include -DHAVE_CC_TLS -
o _eprintf.o -MT _eprintf.o -MD -MP -MF _eprintf.dep -DL_eprintf -c ../../../../gcc-
4.8.3/libgcc/libgcc2.c -fvisibility=hidden -DHIDE_EXPORTS
../../../../gcc-4.8.3/libgcc/libgcc2.c:2043:19: fatal error: stdio.h: No such file or directory
#include <stdio.h>
^
简而言之,libgcc2.c无法找到stdio.h
头文件。
我使用brew
中的gcc-4.8,所以我已经在/usr/local/Cellar/gcc49/4.9.1/lib/gcc/x86_64-apple-darwin13.3.0/4.9.1/include
中有一个包含目录,我认为这是一个简单的修复。问题是<stdio.h>
隐藏在c++/tr1
中。此外,它只是一行#include <tr1/cstdio>
指向子目录中的另一个标题。
从命令行,我知道我有两个可以象征性地链接到的目录(-isystem /opt/cross/arm-elf-eabi/sys-include
和/opt/cross/arm-elf-eabi/include
);这两个目录不存在。
然而,我失去了,因为我不确定用它们象征性地链接它们的路径。我只是尝试将/opt/cross/arm-elf-eabi/include
链接到.../4.9.1/include/c++/tr1
以便找到make stdio.h
,但是在使用时,我有另一个编译错误。
我尝试了很多组合,但我总是遇到错误。这只是简单的C代码,所以我认为我不需要复杂的C ++标题。
include
目录吗?stdio.h
?设置如何? 任何指针都会受到赞赏。
答案 0 :(得分:0)
对于mac os x,头文件位于/usr/include
。我可以使符号链接指向此目录来解决此问题。