找不到C ++头文件

时间:2016-03-13 02:52:56

标签: c++ bash environment-variables

上下文:我正在为嵌入式主板构建一些代码。它要求安装Xilinx工具,Linaro工具链,然后在开发板构建目录中调用setup bash脚本(让我们称之为setup.sh)。

如果我不运行setup.sh,我可以构建一个较低级别的库,它有自己的配置脚本(./configure),它调用通常的./bootstrap脚本。在这种情况下./bootstrap,在这种情况下g ++说它可以找到sstream(C ++流头)。好。细

当我运行setup.sh脚本(在顶层)时,g ++然后说它无法找到sstream。所以不知何故,g ++环境以某种方式发生了变化,而这正是我想要解决的问题。

这种错误情况下的输出是

g++ has streams in std:: namespace
g++ does not have sstream
g++ does not have strstream.h
g++ does not have strstrea.h

我正在尝试调试这个以找出g ++认为它正在做什么以及为什么它找不到sstream标头。有哪些方法可以查看g ++ include和libstdc ++库路径的设置?哪些环境变量控制gcc / g ++的行为?

1 个答案:

答案 0 :(得分:1)

如果我没记错的话,Xilinx会将他们自己的gcc工具链与他们的产品一起发货。

只需添加-I编译文件即可指向正确的包含路径。 尝试在Xilinx的/opt路径中搜索头文件,这样您就不会在标题版本和库版本之间出现不匹配。

Makefile常用的env变量是:

# C Compiler: GNU C Compiler
CC = gcc    
# Linker: GNU Linker
LD = ld    
# C++ Compiler: GNU C++ Compiler
CPP = g++

同时检查

CFLAGS
CPPFLAGS
LDFLAGS

执行setup.sh后,检查是否设置了$ CC。