【发布时间】:2010-04-12 20:55:00
【问题描述】:
我正在尝试使用 gcc 编译一个 c++ 类。由于构建的性质,我需要从非标准位置调用 gcc 并包含非系统定义的标头,只是为了从不同的位置添加一个集合。但是,当我这样做时,我遇到了一个问题,我找不到一些基本符号(惊喜)。所以我基本上是在运行这个命令来编译我的代码:
-->(PARENT_DIR)/usr/bin/gcc # invoke compiler
-B$(PARENT_DIR)/usr/lib64/gcc/suselinux-x8664
-B$(PARENT_DIR)/usr/lib64
#C/C++ flags
-fPIC -fvisibility=default -g -c -Wall -m64 -nostdinc
# source files
-I$(SRC_DIR_ONE)/
-I$(SRC_DIR_TWO)
-I../include
# 'Mock' include the system header files
-I$(PARENT_DIR)/usr/include/c++/$(GCC_VERSION)
-I$(PARENT_DIR)/usr/include/c++/$(GCC_VERSION)/backward
-I$(PARENT_DIR)/usr/include/c++/$(GCC_VERSION)/x86_64-suse-linux
-I$(PARENT_DIR)/usr/lib64/x86_64-suse-linux/$(GCC_VERSION)/include
-I$(PARENT_DIR)/usr/lib64/gcc/x86_64-suse-linux/$(GCC_VERSION)/include
-I$(PARENT_DIR)/usr/lib64/gcc/x86_64-suse-linux/$(GCC_VERSION)/include-fixed
-I$(PARENT_DIR)/usr/src/linux/include
-I$(PARENT_DIR)/usr/x86_64-suse-linux/include
-I$(PARENT_DIR)/usr/include/suselinux-x8664
-I$(PARENT_DIR)/usr/suselinux-x8664/include
-I$(PARENT_DIR)/usr/include
-I$(PARENT_DIR)/usr/include/linux
file.cpp
我收到几个错误,表明未包含基本标头:例如:
$(PARENT_DIR)/usr/include/c++/$(GCC_VERSION)/cstddef ::prtdiff_t 尚未声明 $(PARENT_DIR)/usr/include/c++/$(GCC_VERSION)/cstddef ::size_t 尚未声明。
当我包含头文件目录时,我做错了什么吗?还是我找错地方了?
【问题讨论】:
-
您的包含树中是否有任何符号链接?
-
@D.Shawley 唯一存在的符号链接是 gcc 安装的那些。 $(PARENT_DIR) 本质上是 gcc 安装的根目录。