Centos中只装了GCC没有G++可以运行c++程序吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos中只装了GCC没有G++可以运行c++程序吗?相关的知识,希望对你有一定的参考价值。

我的电脑是Centos6.4,通过yum install gcc装了GCC,没有装G++,运行gcc -o hello.cpp hello报错如下:
gcc: error trying to exec 'cclplus': execvp :No such file or directory 在网上查讲GCC和G++版本不一致,我通过yum install g++下载不了,g++,难道没有g++就不可以运行吗?求解释

参考技术A 不可以,因为c++包含c,g++编译器编译的时候会出现状况,so。。。 参考技术B 你的命令写错了,应该是
gcc -o hello hello.cpp
-o后面应该是目标程序,你把位置写颠倒了
参考技术C c++程序只能用g++命令吧。。。
你要是装不了g++,就把程序改成c的呗。。。本回答被提问者采纳

使用 gcc48 编译和运行 c++ 代码失败

【中文标题】使用 gcc48 编译和运行 c++ 代码失败【英文标题】:Fail to compile and run the c++ code with gcc48 【发布时间】:2016-02-17 17:52:24 【问题描述】:

我从 github 克隆了某人的 c++ 代码,但编译失败。作者告诉我,他可以用 gcc 4.8.4 成功运行它。所以我使用homebrew安装了gcc48,并在他的代码文件夹中的makefile中指定了gcc的版本。

这是 Makefile 中的设置:

CC=g++-4.8
CFLAGS=-c -pipe -O3
#INCLUDE=-I /home/xh/jianguoyun/my/code/cpp/mylib
MODEL_EXE=bbtm infer

all:$(MODEL_EXE) 

bbtm:BurstyBTM.o main.o
    $(CC) $^ -o $@

infer:infer.o
    $(CC) $^ -o $@

mail.o:BurstyBTM.h
BurstyBTM.o:BurstyBTM.h biterm.h doc.h
infer.o:infer.h doc.h

%.o:%.cpp
    $(CC) $(INCLUDE) $(CFLAGS) $< -o $@ 

clean:
    rm -rf *.o $(MODEL_EXE)

但是在编译过程中出现错误:

g++-4.8  -c -pipe -O3 BurstyBTM.cpp -o BurstyBTM.o 
BurstyBTM.cpp: In member function 'Pvec<double> BurstyBTM::compute_pz_b(Biterm&)':
BurstyBTM.cpp:129:23: error: could not convert 'pz.Pvec<T>::normalize<double>(0.0)' from 'void' to 'Pvec<double>'
   return pz.normalize();
                       ^
BurstyBTM.cpp: In member function 'void BurstyBTM::save_pz(std::string)':
BurstyBTM.cpp:158:41: error: conversion from 'void' to non-scalar type 'Pvec<double>' requested
   Pvec<double> pz = nb_z.normalize(alpha);
                                         ^
BurstyBTM.cpp: In member function 'void BurstyBTM::save_pw_z(std::string)':
BurstyBTM.cpp:164:37: error: conversion from 'void' to non-scalar type 'Pmat<double>' requested
   Pmat<double> pw_z = nwz.normr(beta);
                                     ^
make: *** [BurstyBTM.o] Error 1

我尝试安装 gcc49 并再次运行它,但也失败了。我猜这不是因为代码错误,因为作者说他可以毫无错误地运行它。我的操作系统是 os x 10.10。你能帮我解决这个问题吗?我对此几乎要生气了。提前谢谢!

编辑:

这是github的链接

错误代码如下:

for (int k = 1; k < K + 1; ++k) 
  double deno = 2 * nb_z[k] + W * beta;
  double pw1k = (nwz[k][w1] + beta) / deno;
  double pw2k = (nwz[k][w2] + beta) / (deno + 1);
  double pk_t = (nb_z[k] + alpha) / (nb + K * alpha);
  pz[k] = eta * pk_t * pw1k * pw2k;


return pz.normalize();


void BurstyBTM::save_pz(string pt) 
Pvec<double> pz = nb_z.normalize(alpha);
pz.write(pt);



void BurstyBTM::save_pw_z(string pt) 
Pmat<double> pw_z = nwz.normr(beta);
pw_z.write(pt);

【问题讨论】:

发布makefile的内容而不是代码!谁能帮助您找出问题所在? 我们需要看一些代码。 betaalpha 是什么?他们是Pvec&lt;double&gt;吗? 我认为从您的错误消息中可以看出,错误在于“BurstyBTM.cpp”中的方法。它与 Makefile 无关。 显然编译器认为函数normalizenormr 是用void 返回类型声明的。那么,是吗? 是的,他们确实是:github.com/xiaohuiyan/BurstyBTM/blob/master/src/pvec.h 【参考方案1】:

至少第一个错误 BurstyBTM.cpp:129:23 确实是编码错误,编译器是正确的 - 在 pvec.h 中,Pvec::normalize 定义为 void 作为返回类型。

没有检查其他的,但我想这是同一种错误,我想知道作者是如何编译它的(它肯定不会用 g++ 和 MSVC 编译)。

【讨论】:

不仅作者说可以运行成功。另一个人说他可以在 Linux 上运行它而不会出错。我正在使用 os x 10.10。

以上是关于Centos中只装了GCC没有G++可以运行c++程序吗?的主要内容,如果未能解决你的问题,请参考以下文章

已经安装好了gcc 但是为啥还出现Cannot find appropriate C++ compiler on this system

使用 gcc/g++ 使 C++ 程序在没有窗口的情况下运行? [复制]

大神们帮忙,实在搞不定了。 装了centos,没网,是驱动问题,然后就找驱动被,发现没有gcc,然后就找rpm

在centos/vim/gcc g++下 出现错误

Eclipse neon C 程序没有构建 g++ 并且在路径错误中找不到 gcc

使用gcc -pg -g编译后不会写入gmon.out