兄弟在solaris8forintel上安装了 libgcc-3.2-sol8-intel-local,gcc-3.2-sol8-intel-local,make-3.79.1-sol8-intel-local 可以编译c程序,
[求助]gcc 编译c++程序问题,急!急!急!Unix系统
。 但是编译如下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
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
main()
{
cout<<"gnu c++"< } /////////// 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 如果写错当然不知道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 #include #include ...... sql2000 回复于:2002-10-10 13:43:41[quote][b]下面引用由[u]zsh365[/u]在 [i]2002/10/10 01:23pm[/i] 发表的内容:[/b] 大哥,现在c++已经标准化了,可以使用 #include #include #include ... [/quote] 那我就不清楚了,我只是在学数据结构的时候用过。 不过你的第二个的提示确实是不认识cout, endl 之类的呀! 跟没有include zsh365 回复于:2002-10-10 13:52:10samhoo兄讲的是对的。 [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:13std:cout或者using namespace std; wsye 回复于:2002-10-10 17:42:47Unix支持编译C++的类吗? 我那时也是这样的错误啊 zsh365 回复于:2002-10-10 18:07:52avlee兄是对的。 谢谢各位大哥了。 萧筱筱 回复于: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 [/quote] 怎么C++现在可以这么写了么? 我原来的印象也是和sql2000一样的啊 zsh365 回复于:2002-10-11 13:27:01问题已经由samhoo兄 和 avlee兄解决了。 好像是1999年,c++进行了标准化。之后支持标准化的编译器可以使用 #include 等不带.h的头文件。 gcc有了一个库叫libstdc++,安装了这个库以后就可以使用上述的头文件了。 而且使用#include /////////////////////////// ////wen1.C #include main() { cout<<"gnu c++"< } //////////////////// 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:41c++ 确实可以 不加 .h 了 jazy 回复于:2002-10-11 14:38:40自从国际标准组织将STL 纳入C++标准后,一般不用后缀.h了 sql2000 回复于:2002-10-11 16:26:54g++ -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:28iostream.h 和 iostream 这两个头文件及对应的so对数据的处理能力是不同。后者要强于前者。其它同前缀名的文件也相同。 所以现只要是使用GCC的地方都不要使用带.h的STL库了。 原文转自:http://www.ltesting.net电脑资料
《[求助]gcc 编译c++程序问题,急!急!急!Unix系统》(https://www.unjs.com)。