[求助]gcc 编译c++程序问题,急!急!急!

发表于:2007-06-09来源:作者:点击数: 标签:
兄弟在solaris8forintel上安装了 libgcc-3.2-sol8-intel-local,gcc-3.2-sol8-intel-local,make-3.79.1-sol8-intel-local 可以编译c程序。 但是编译如下c++程序后: //b.C #includeiostream classA{ public: voidprint(){printf(gnuc++class\n#59;} } main(

兄弟在 solaris 8 for intel上安装了
libgcc-3.2-sol8-intel-local, gcc-3.2-sol8-intel-local,make-3.79.1-sol8-intel-local
可以编译c程序。
但是编译如下c++程序后:
// b.C
#include <iostream>
class A{
        public:
                void print() { printf("gnu c++ class\n"; }
};
main()
{
        A a;
        a.print();
}
///////

g++ -o b b.C

# ./b
ld.so.1: ./b: fatal: libstdc++.so.5: open failed: No such file or directory
Killed

而如下的c++程序编译不了:
///wen.C
#include <iostream>

main()
{
        cout<<"gnu c++"<<endl;
}
///////////

g++ -o wen wen.C
wen.C: In function `int main()':
wen.C:5: `cout' undeclared (first use this function)
wen.C:5: (Each undeclared identifier is reported only once for each function it
   appears in.)
wen.C:5: `endl' undeclared (first use this function)
make: *** [wen] Error 1


各位高人,如何办,请帮助



 sql2000 回复于:2002-10-10 13:02:18
新手吧,INCLUDE 都会写错,
#include <iostream.h>

如果写错当然不知道COUT,ENDL之类的东西了。

 samhoo 回复于:2002-10-10 13:22:32
# ./b
ld.so.1: ./b: fatal: libstdc++.so.5: open failed: No such file or directory
Killed

是因为找不到libstdc++动态链接库,把该库加到搜索路径环境变量中$LD_LIBRARY_PATH。
或者是其他路径变量,你man ld会看到说明。

 zsh365 回复于:2002-10-10 13:23:26
大哥,现在c++已经标准化了,可以使用
#include<iostream>
#include<string
#include<vector>
......


 sql2000 回复于:2002-10-10 13:43:41
[quote][b]下面引用由[u]zsh365[/u]在 [i]2002/10/10 01:23pm[/i] 发表的内容:[/b]
大哥,现在c++已经标准化了,可以使用
#include<iostream>
#include<string
#include<vector>
...
[/quote]
那我就不清楚了,我只是在学数据结构的时候用过。
不过你的第二个的提示确实是不认识cout, endl 之类的呀!
跟没有include <iostream.h> 的情况是一样的呀,不如让斑竹把帖子转到C++论坛去吧。

 zsh365 回复于:2002-10-10 13:52:10
samhoo兄讲的是对的。
[quote][b]下面引用由[u]samhoo[/u]在 [i]2002/10/10 01:22pm[/i] 发表的内容:[/b]
# ./b
ld.so.1: ./b: fatal: libstdc++.so.5: open failed: No such file or directory
Killed
是因为找不到libstdc++动态链接库,把该库加到搜索路径环境变量中$LD_LIBRARY_PATH。
...
[/quote]
我将
export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib
就可以运行b了。

在linux上gcc是可以编译上面那个wen.C的,我试过。
还有那个问题我确实想问高手解决。  

 zsh365 回复于:2002-10-10 14:47:02
请版主将这个帖子置顶!

 mmmmn 回复于:2002-10-10 17:05:20
我是看不懂。。。。

 avlee 回复于:2002-10-10 17:08:13
std:cout或者using namespace std;


 wsye 回复于:2002-10-10 17:42:47
Unix支持编译C++的类吗?
我那时也是这样的错误啊

 zsh365 回复于:2002-10-10 18:07:52
avlee兄是对的。
谢谢各位大哥了。

 萧筱筱 回复于:2002-10-10 21:22:52
看不懂。。。

 zmcc135 回复于:2002-10-11 01:42:31
[quote][b]下面引用由[u]sql2000[/u]在 [i]2002/10/10 01:43pm[/i] 发表的内容:[/b]
那我就不清楚了,我只是在学数据结构的时候用过。
不过你的第二个的提示确实是不认识cout, endl 之类的呀!
跟没有include <iostream.h> 的情况是一样的呀,不如让斑竹把帖子转到C++论坛去吧。
[/quote]
怎么C++现在可以这么写了么?
我原来的印象也是和sql2000一样的啊

 zsh365 回复于:2002-10-11 13:27:01
问题已经由samhoo兄 和 avlee兄解决了。
好像是1999年,c++进行了标准化。之后支持标准化的编译器可以使用
#include<iostream>
等不带.h的头文件。
gcc有了一个库叫libstdc++,安装了这个库以后就可以使用上述的头文件了。
而且使用#include <iostream.h> 编译时会有waring:
///////////////////////////
////wen1.C
#include<iostream.h>

main()
{
        cout<<"gnu c++"<<endl;
}
////////////////////
g++ -o wen1 wen1.C
In file included from /usr/local/include/c++/3.2/backward/iostream.h:31,
                 from wen1.C:1:
/usr/local/include/c++/3.2/backward/backward_warning.h:32:2: warning: #warning .


 ilike911 回复于:2002-10-11 13:32:57
确实可以 不加  .h 了 

 ilike911 回复于:2002-10-11 13:35:41
c++ 确实可以 不加  .h 了 

 jazy 回复于:2002-10-11 14:38:40
自从国际标准组织将STL 纳入C++标准后,一般不用后缀.h了

 sql2000 回复于:2002-10-11 16:26:54
g++ -o wen wen.C
wen.C: In function `int main()':
wen.C:5: `cout' undeclared (first use this function)
wen.C:5: (Each undeclared identifier is reported only once for each function it
  appears in.)
wen.C:5: `endl' undeclared (first use this function)
make: *** [wen] Error 1

我后来发帖子,不是讨论后缀的问题。
我是说他编译时的错误和没有INCLUDE一样。
那么简单的一个测试程序肯定不会是程序的问题,我在我的系统上编译过了,没问题。
cout, endl在程序中不能正确解释,就是你INCLUDE有问题,他是在iostream中定义的。
不然就是你的C++编译器有问题了,重装。




 ilike911 回复于:2002-10-11 17:08:47
[quote][b]下面引用由[u]avlee[/u]在 [i]2002/10/10 05:08pm[/i] 发表的内容:[/b]
std:cout或者using namespace std;
[/quote]


 mycuzhoujun 回复于:2002-12-11 10:10:28
iostream.h 和 iostream 这两个头文件及对应的so对数据的处理能力是不同。后者要强于前者。其它同前缀名的文件也相同。
所以现只要是使用GCC的地方都不要使用带.h的STL库了。

原文转自:http://www.ltesting.net