这是我第一次使用Eclipse,第一次在linux环境下编程。所以我最终可能会发布一些半无用的信息,但我只是想尽可能详细地说明。
问题:我正在尝试构建一个项目,我收到以下错误和警告。
问题:为了在IDE中开始使用c ++,我需要做什么,或者得到什么?修复错误会很好,但上面说的是我的基本目标。
IDE信息:
Eclipse
Version: Helios Release
Build id: 20100617-1415
操作系统信息:
Fedora 13: i686
错误(1项)
make: *** [src/xoorMath.o] Error 127 xoorMath C/C++ Problem
警告(2项)
Error launching external scanner info generator (g++ -E -P -v -dD /home/xoorath/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp) xoorMath Unknown C/C++ Problem
Error launching external scanner info generator (g++ -E -P -v -dD /home/xoorath/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp) xoorMath Unknown C/C++ Problem
源代码
//============================================================================
// Name : xoorMath.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
using namespace std;
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
生成的Makefile
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
-include ../makefile.init
RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
-include src/subdir.mk
-include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C++_DEPS)),)
-include $(C++_DEPS)
endif
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
ifneq ($(strip $(CPP_DEPS)),)
-include $(CPP_DEPS)
endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
endif
-include ../makefile.defs
# Add inputs and outputs from these tool invocations to the build variables
# All Target
all: xoorMath
# Tool invocations
xoorMath: $(OBJS) $(USER_OBJS)
@echo 'Building target: $@'
@echo 'Invoking: GCC C++ Linker'
g++ -o"xoorMath" $(OBJS) $(USER_OBJS) $(LIBS)
@echo 'Finished building target: $@'
@echo ' '
# Other Targets
clean:
-$(RM) $(OBJS)$(C++_DEPS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS) xoorMath
-@echo ' '
.PHONY: all clean dependents
.SECONDARY:
-include ../makefile.targets
修改 尝试运行'gcc -E -P -v -dD /home/xoorath/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp'
[root@wt227-09-fedora xoorath]# gcc -E -P -v -dD /home/xoorath/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp
Using built-in specs.
Target: i686-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch=i686 --build=i686-redhat-linux
Thread model: posix
gcc version 4.4.4 20100630 (Red Hat 4.4.4-10) (GCC)
COLLECT_GCC_OPTIONS='-E' '-P' '-v' '-dD' '-mtune=generic' '-march=i686'
cc1plus -E -quiet -v -P -D_GNU_SOURCE /home/xoorath/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp -mtune=generic -march=i686 -dD
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
[root@wt227-09-fedora xoorath]#
答案 0 :(得分:7)
真正的简单解决方案。事实证明我没有g ++。我安装了gcc,并且在这里有人知道有什么区别,如果有的话可以随意启发我。
我必须进入控制台并执行以下操作
yum install gcc-c++
多数民众赞成。
答案 1 :(得分:6)
以下是make返回的值。
0 - 如果所有的makefile都被成功解析,并且没有构建的目标失败 1 - 如果使用了-q标志,make确定需要重建目标 2 - 如果遇到任何错误。
以及任何形式的错误编号
'[foo]错误NN' '[foo]信号描述' 这些错误根本不会产生错误。它们意味着作为配方的一部分调用的程序返回非0错误代码('错误NN'),这使得解释为失败,或者以某种其他异常方式退出(具有某种类型的信号)。
如果消息没有附加 * ,则子进程失败,但makefile中的规则以 - 特殊字符为前缀,因此忽略错误。
因此,这里返回值为127的make的情况,由shell返回而不是来自make。请参阅bash的手册页。