要想入门快,就得勤动手!
为记录标志性事件,在此记录为记:
在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程序设计的收获。
very good!
it helps me!
Thanks