十二月 21, 2009

第一次玩Linux C++,通过了,算是成功入门@_^

Written by

要想入门快,就得勤动手!

为记录标志性事件,在此记录为记:

在src下编辑main.c文件如下:


http://www.CodeHighlighter.com/

–>#include <iostream>

int main()
{
    cout
<<Hello, world. I am robort 1!<<endle;
    
return 0;

 

同目录下创建一个makefile,用来编译‘项目’,如下:


http://www.CodeHighlighter.com/

–># Makefile中,命令行前面必须是tab。。。
main: main.o
    gcc 
o $@ $^
.c.o:
    gcc 
c $<

 

运行make命令,出错:

hyh@ubuntu:~/workspace/RobortKernel/src$ make
gcc -c main.c
main.c:1:20: 错误: iostream:没有该文件或目录
main.c: 在函数‘main’中:
main.c:5: 错误: ‘cout’未声明(在此函数内第一次使用)
main.c:5: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其
main.c:5: 错误: 所在的函数内也只报告一次。)
main.c:5: 错误: ‘endle’未声明(在此函数内第一次使用)
make: *** [main.o] 错误 1

原来,iostream.h属于C++库,所以包含的时候应该加入命名空间:using namespace std,修改如下:


http://www.CodeHighlighter.com/

–>#include <iostream>
using namespace std;

int main()
{
    cout
<<Hello, world. I am robort 1!<<endle;
    
return 0;

 

再编译,出错:

hyh@ubuntu:~/workspace/RobortKernel/src$ make
gcc -c main.c
main.c:1:20: 错误: iostream:没有该文件或目录
main.c:2: 错误: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘namespace’
main.c: 在函数‘main’中:
main.c:6: 错误: ‘cout’未声明(在此函数内第一次使用)
main.c:6: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其
main.c:6: 错误: 所在的函数内也只报告一次。)
main.c:6: 错误: ‘endle’未声明(在此函数内第一次使用)
make: *** [main.o] 错误 1

原来,既然是C++项目,则应该用g++编译,而不能用c编译器gcc编译,修改makefile如下:


http://www.CodeHighlighter.com/

–># Makefile中,命令行前面必须是tab。。。
main: main.o
    g
++ o $@ $^
.c.o:
    g
++ c $<

再次编译,又出错:

hyh@ubuntu:~/workspace/RobortKernel/src$ make
g++ -c main.c
main.c: In function ‘int main()’:
main.c:6: 错误: ‘endle’在此作用域中尚未声明
make: *** [main.o] 错误 1

 原来是endl写成了endle,笔误,修正,编译,成功了:

hyh@ubuntu:~/workspace/RobortKernel/src$ make 

 g++ -c main.c
g++ -o main main.o

运行一个看看 :)

hyh@ubuntu:~/workspace/RobortKernel/src$ main
bash: main:找不到命令

omg,咋回事?相当的受打击了,在Linux下,怎么执行文件都不知道了 :(

网上搜罗一番,这样执行:

hyh@ubuntu:~/workspace/RobortKernel/src$ ./mainHello, world. I am robort 1!

终于成功了!

 总结:

1、C++程序用g++ 编译器,而不是gcc;

2、使用C++函数库,必须一命名空间的方式引用;

3、makefile中,命令行必须以tab开始;

4、执行可执行文件,需要定位符,如果是当前目录,必须加上 ./,否则被当成系统命令了

这就是第一次Linux程序设计的收获。

Category : C/C++Linux/Unix

Tags :

Comments

One Response

  1. 匿名说道:

    very good!
    it helps me!
    Thanks

发表评论

电子邮件地址不会被公开。

Proudly powered by WordPress and Sweet Tech Theme