linux编程之动起手来

有了一个linux环境以后,接下来要做的事情就是熟悉它。而那些bash命令显然满足不了我们的需求,于是,让我们真刀真枪在linux下编程序吧。

第一个程序

第一个程序当然是老掉牙的hello world了。打开心爱的linux的家:cygwin,接下来怎么新建文件,怎么写程序呀?

这个问题的答案也是我推荐cygwin的一个原因,就是你可以在windows下用记事本或者你喜欢的IDE把程序写好,然后把文件复制到linux 下的自己目录里面。

我知道你现在想打我,说这算什么linux编程啊,但是我这几篇博客的目的是让初学linux的朋友一步一步从windows下迁移过来,所以直接从windows下拷贝是最直接了当的事情,我想先介绍源文件的编译,然后再介绍其他,这样过渡平滑一些。

在windows下面用记事本编写如下程序:

#include <iostream>
using namespace std;
int main(){
  cout << "hello" << endl;
  return 0;
}

保存为:hello.cpp,然后拷贝到cygwin里面自己的目录下,我自己的的是/home/Eric,然后查看一下,如图所示:


有了源代码,下一步就是用这个源代码生成可执行程序了。我们用g++编译器,首先运行cygwin的安装文件,更新一下我们的linux,在选择软件包的那一步,搜索g++,然后选中安装就ok了,如图所示:

用g++编译hello.cpp的过程,我也用文本的方式贴在后面,用"//"的方式把我做的注视在后面:

Eric@Eric-PC ~
$ ls                            //显示当前目录内容
hello.cpp

Eric@Eric-PC ~
$ g++ hello.cpp                 //使用g++编译源文件hello.cpp

Eric@Eric-PC ~
$ ls
a.exe  hello.cpp                //g++默认编译后生成可执行文件为a.exe

Eric@Eric-PC ~
$ ./a.exe                       //运行可执行文件a.exe
hello                           //输出hello

Eric@Eric-PC ~
$ g++ -o hello.exe hello.cpp    //g++使用-o选项,指定生成的可执行文件为hello.exe

Eric@Eric-PC ~
$ ls                            //查看当前目录内容
a.exe  hello.cpp  hello.exe	//3个文件,没问题吧

Eric@Eric-PC ~
$ ./hello.exe                   //执行hello.exe
hello                           //效果和a.exe一样,都是从同一个源文件编译得来的

Eric@Eric-PC ~
$                               //该你了,写个不同的程序多练练

第一个程序之后

编完hello world了,那下一步呢? 我这里强烈推荐一个网站:USACO(http://ace.delos.com/usacogate)。里面由易到难设计了各种算法题,可以带领你从菜鸟走向大牛。就算哪天我不再写博客,你也一定要坚持把那个网站上的题做完,做完后网易腾讯随便进。具体怎么在那个网站提交程序,仔细阅读网站里面的内容,相信你能自己搞定。

然后有两个问题。

第一,就是那个网站是英语的,但是不要怂,是程序员的话英语绕不过去的,硬着头皮上吧,就算你和初高中英语女老师有很深的怨念,这道坎必须迈过去,而且这道坎其实没有想象中难,很多都是计算机专业的词汇,查一两个礼拜词典,你就发现那些单词你都认识了。

第二,我建议你和志同道合的朋友、同学一起学习,一起上网站,一起编程,几个人的进步总是比一个人快的,单词不认识也可以互相问问。不过,最后的程序一定是每个人单独写出来的,不要互相拷贝。今天和你一起编程的人,明天就可能和你一起创业,所以,不要一个人战斗。


之后之后

因为我是用C++的,所以这里只能给出C++的指导。从这篇博客开始,我会写几篇博客,介绍linux下的一套工具,主要有:

  • 编译器:g++
  • 编辑器:emacs
  • 调试器:gdb
  • 自动编译器:make
介绍这些工具的同时,我也会说说和程序有关的各种问题,包括:
  • C++的语言特性,这里面又包括面向过程,面向对象,标准模板库,范型编程
  • 如何调试程序,这个会深入到汇编吧:)
  • 操作系统
我写的可能会比较扯,所以可能也会包括其他一些内容,现在也不知道,大家见谅:b 

希望大家多练,我用3、4年弄懂的东西,大家可以1、2年学会,这不是不可能,因为我自己走了很多弯路,希望你能省下很多时间和精力去研究更高深的东西。
我要介绍的那些工具,希望初学的人,学会一个以后,在USACO上面做个4、5道题,然后再学下一个工具,手动编译是个好事,不会害你的。

你可能感兴趣的:(编程,linux,windows,工具,emacs,编译器)