Chinaunix

标题: 请问:为何GCC 4.73连这个基本的C++程序都无法编译 [打印本页]

作者: mcmay    时间: 2013-09-17 23:34
标题: 请问:为何GCC 4.73连这个基本的C++程序都无法编译
在DOS下用DJGPP(含GCC4.73)编译以下这个简单程序竟然都会无法编译:
  1. //my first c++ program

  2. #include <iostream>

  3. int main()
  4. {
  5.         using namespace std;
  6.        
  7.         cout << "My first c++.";
  8.         cout<< endl;
  9.         cout << "That's it.";
  10.        
  11.         return 0;
  12. }
复制代码
编译及报错情况:


作者: tseesing    时间: 2013-09-17 23:46
g++










作者: windoze    时间: 2013-09-17 23:47
本帖最后由 windoze 于 2013-09-17 23:48 编辑

所以说我不建议在Windows下玩除了VC以外的C++编译器,光配置神马的就要折腾半天。
如果一定要用GCC,换Linux吧。

PS. 话说回来,无论在什么OS下,编译C++程序都应该用"g++"而不是"gcc"
作者: mcmay    时间: 2013-09-18 07:44
谢谢tseeing和windoze两位的参与,但我试了g++,还试了gpp,问题依旧:

C:\CC>g++ 1stcpp.cc
Illegal command: g++.

C:\CC>gpp 1stcpp.cc
In file included from 1stcpp.cc:3:0:
c:/djgpp/bin/../lib/gcc/djgpp/4.73/../../../../include/cxx/4.73/iostream:39:28:
fatal error: bits/c++config.h: No such file or directory (ENOENT)

我用CodeBlocks编译,完全没问题。

report2.jpg (18.14 KB, 下载次数: 132)

report2.jpg

作者: windoze    时间: 2013-09-18 08:10
回复 4# mcmay

1. GCC中的C++部分你没装
2. GPP不是C++编译器
3. 换Linux吧,要不就用VC,表折磨自己和论坛上的其他朋友。
作者: haodahaozi    时间: 2013-09-18 08:11
linux 下可以编过  
作者: fender0107401    时间: 2013-09-18 08:52
windoze 发表于 2013-09-18 08:10
回复 4# mcmay

1. GCC中的C++部分你没装


亮点在这里:表折磨自己和论坛上的其他朋友。
作者: mcmay    时间: 2013-09-18 09:08
windoze 发表于 2013-09-18 08:10
回复 4# mcmay

1. GCC中的C++部分你没装

谢谢你的持续关注。我用的DJGPP是装了C++编译器组件的,所以应该会有C++程序的编译功能。我也不是穷折腾,我在电脑上用Codeblocks和cygwin编译都完全没问题,只不过我的手机上的C4droid只能用TCC,GCC用不了。C4droid更新了主程序,不支持旧版的GCC,只支持新版的4.8.1版的,所以无法用GCC。在这种情况下我只好装了DOSBOX,并在上面放了个DJGPP。可惜的是,用DJGPP下的gcc或者gpp编译那个C++程序就无法通过,而g++命令又不存在。我如果能用C4droid,就不会去用DJGPP,每次都要先打开DOSBOX,麻烦多了去了。
作者: mcmay    时间: 2013-09-18 09:10
fender0107401 发表于 2013-09-18 08:52
亮点在这里:表折磨自己和论坛上的其他朋友。

问题如果讨论清楚了,所有的折腾都值得。
作者: fender0107401    时间: 2013-09-18 09:28
mcmay 发表于 2013-09-18 09:10
问题如果讨论清楚了,所有的折腾都值得。


说的很有道理。
作者: folklore    时间: 2013-09-18 09:34
1. 改扩展名 cc为cpp
2. gcc 好像有个参数是强制使用g++而不是gcc编译的, 忘了。
作者: zhaohongjian000    时间: 2013-09-18 09:51
跟扩展名、用gcc/g++也没有关系,gcc和g++的区别在于gcc不链接libstdc++,用cc做扩展名gcc也能识别。

报的错是找不到头文件,而且不是找不到iostream(说明iostream存在),所以应该看看为什么没有bits/c++config.h这个文件。
作者: myworkstation    时间: 2013-09-18 10:07
回复 1# mcmay


    多看看官方文档啊,“C++ sources. These are preprocessed with cpp and then compiled with cc1plus. You need gpp*b.zip.”,你的DJGPP装gpp*b.zip了吗?不然是不能编译c++程序的。

http://www.delorie.com/djgpp/doc/ug/basics/compiling.html
作者: 幻の上帝    时间: 2013-09-18 10:50
回复 3# windoze


    mingw-builds的g++比VC++好折腾多了,直接下载解压设置完%PATH%就能用。cl用起来各种不爽。

(话说,4.73是啥版本。)
作者: noword2k    时间: 2013-09-18 11:06
装MSYS或者Cwgwin吧。
有标准的GCC环境。
作者: mcmay    时间: 2013-09-18 12:49
myworkstation 发表于 2013-09-18 10:07
回复 1# mcmay

在编译之前我已经下载了gpp473b.zip,这个文件是网站上的file picker根据我的编译要求为我选取的,我也按照readme.lst中的指点正确解压了。
作者: mcmay    时间: 2013-09-18 12:52
noword2k 发表于 2013-09-18 11:06
装MSYS或者Cwgwin吧。
有标准的GCC环境。

呵呵,我电脑上有CodeBlocks和cygwin,但我的手机上没有这些,只有C4droid,但只能用其中的tcc,我已安装的gcc版本和更新后的C4droid合不上,早知道就不更新主程序了。但最新版的gcc 4.8.1.apk却下载不到。
作者: trisisble    时间: 2013-09-18 13:16
LZ有没有试过下面这个?

GCC plugin forC4droid

里面有GCC 4.8.1吧。

It contains GCC 4.8.1 with Bionic (Android libc), email me to get the source code.
To download this app you must have C4droid installed (other usage is prohibited).
Android is a trademark of Google Inc.


作者: windoze    时间: 2013-09-18 14:12
回复 14# 幻の上帝

用VC干吗不用IDE?非要直接用cl不是找麻烦么?更别说那个坑爹的nmake……
   
作者: windoze    时间: 2013-09-18 14:14
本帖最后由 windoze 于 2013-09-18 14:14 编辑

回复 14# 幻の上帝

(话说,4.73是啥版本。)

GCC 4.73就是现在4.7系列的最新稳定版。好吧,版本号其实是4.7.3。
作者: mcmay    时间: 2013-09-18 16:07
trisisble 发表于 2013-09-18 13:16
LZ有没有试过下面这个?

GCC plugin forC4droid

谢谢你提供网址,trisisble,我以前也登陆过这个网页,可惜我的SAMSUNG I9228上不能装GooglePlay,所以无法下载。我在网上找了好久,就是找不到GCC for Android 4.8.1,也就无法用C4droid来编译C++。所以才想通过在DOSBOX装DJGPP来编译C++程序。
作者: mcmay    时间: 2013-09-18 16:09
windoze 发表于 2013-09-18 14:12
回复 14# 幻の上帝

用VC干吗不用IDE?非要直接用cl不是找麻烦么?更别说那个坑爹的nmake……

呵呵,我来插一句,我是在手机上,不是在电脑上。
作者: trisisble    时间: 2013-09-18 16:21
回复 21# mcmay

http://www.1mobile.com/gcc-plugin-for-c4droid-229878.html
知道了软件名称,耐心一点,总能找到其它下载地方的,网上的搬运工很多的。


   
作者: mcmay    时间: 2013-09-18 19:01
trisisble 发表于 2013-09-18 16:21
回复 21# mcmay

http://www.1mobile.com/gcc-plugin-for-c4droid-229878.html

还是有人有办法!非常感谢trisisble!省得我老在DJGPP上面纠结了。
作者: 幻の上帝    时间: 2013-09-18 19:56
回复 20# windoze


    吐槽的就是这个来着。。。
基本上*NIX以及GNU的版本命名传统是major.minor.patchlevel,每个分量都是独立的自然数,并不是像小数部分一样补0影响大小。所以4.73和4.7完全两回事了(考虑到GCC真有2.95啥的,嘛……)。
其它像Windows花样就比较多了……
作者: 幻の上帝    时间: 2013-09-18 20:01
回复 19# windoze


最近几年的VC++已经不用nmake改用MSBuild了。用VC++当然也可以不用IDE而只是编译,因为容易找到嫌调用devenv的命令行折腾sln都麻烦,直接折腾MSBuild和cl的情况。一个例子:http://www.klayge.org/2013/07/01 ... %E6%94%B9%E8%BF%9B/
考虑到Clang++还不成熟,需要Win32“标准”ABI的其它替代实现时还不如直接使用VC++的编译器了。

作者: windoze    时间: 2013-09-18 20:10
回复 26# 幻の上帝

我用clang++编译的程序已经在生产环境跑了一年多没中断过了,clang++还不成熟怎么讲?
说的是Windows下?话说在Windows下除了VC其它都不“成熟”。

作者: Sevk    时间: 2013-09-18 20:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: 幻の上帝    时间: 2013-09-18 22:00
回复 27# windoze


    当然是说Windows。
    Intel C++不够VC++成熟么。

作者: windoze    时间: 2013-09-18 23:08
回复 29# 幻の上帝

……你一定要把icc扯出来抬杠么……好吧……这个我忘了……
作者: mcmay    时间: 2013-09-20 20:30
回复 28# Sevk
呵呵,不好意思,这是什么东东?

   
作者: fyzx77    时间: 2013-09-22 13:05
晕死,用MinGW Developer Studio直接编译通过,没楼主说的问题,搞不懂楼主自己怎么配置的
作者: hwrd_et    时间: 2013-09-22 14:22
gcc可以编译cpp,但是链接的时候一定要用g++

所以一步完成的话就直接g++ -o foo foo.cpp

如果两步的话
gcc -c foo.cpp
g++ -o foo foo.o
作者: mcmay    时间: 2013-09-22 16:51
fyzx77 发表于 2013-09-22 13:05
晕死,用MinGW Developer Studio直接编译通过,没楼主说的问题,搞不懂楼主自己怎么配置的

呵呵,我用CodeBlocks和cygwin编译也没问题,但用DOS下的DGJPP编译就是通不过,而且DOS下的DGJPP里没有g++命令。
作者: mcmay    时间: 2013-09-22 16:52
hwrd_et 发表于 2013-09-22 14:22
gcc可以编译cpp,但是链接的时候一定要用g++

所以一步完成的话就直接g++ -o foo foo.cpp

谢谢,但DJGPP在DOS下没有g++。
作者: Zoelov    时间: 2013-09-23 10:45
编译c++程序,当然得是g++了,gcc是用来编译c语言的,它们是有很大区别的
作者: joysurn    时间: 2013-09-23 13:51
在手持设备上用C4droid来搞东西,有自虐倾向啊。
作者: fly3ds    时间: 2013-10-04 12:27
        using namespace std;
'
这一句你应该放到开头,其余我就不说了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2