在Ubuntu下编程开发配置Tips

2008年10月31日 | 分类: Configuration | 标签: , ,

欢迎光临Caspar Ant,如果您喜欢本站的内容,欢迎订阅我的RSS;如果您需要出于非商业性质的转载,请先阅读版权声明页面。

值此Ubuntu 8.10发布之际(终于发布了,再不发布那就得叫Ubuntu 8.11了),特作此文。本文只是作为一个Ubuntu入门教材参考,因为很多人说我写Ubuntu安装教程时很多地方写的很模糊,对于没有Linux基础的人来说无异于天书- -b 孩子们,满足你们的愿望吧…

本文基于如下对读者的假设:

1. Ubuntu Linux安装成功。如果迄今为止没有成功,请询问身边已经安装成功的人。我相信安装成功的人的数量,在学校抓一把至少其中含有一个。

2. 了解终端是什么,知道如何打开终端输入命令,了解命令语法。如果不知道如何打开终端输入命令,我也没办法……以下所有叙述,如果涉及命令操作,必然是在终端中进行操作。学过DOS的人应该对这一点在理解上没有难度,在Windows下用过cmd 运行ping命令检测网络的人在理解上应该也没有难度。关于命令的语法,比如sudo apt-get install OO_AND_XX这个命令,表示在使用root权限(sudo)的情况下使用软件包管理工具(apt-get)进行安装 (install)OO_AND_XX这个软件包的操作;同理sudo gedit /etc/apt/sources.list这个命令表示在使用root权限的情况下使用gedit这个文本编辑器打开/etc/apt/路径下的 sources.list这个文件进行编辑(真费劲- -b)

3.了解Linux下root权限的基本知识,为什么在2中的例子都要带上root而你见过的Redhat的教科书上就没有?因为上述命令是需要root权限的……

由于Ubuntu LiveCD不带开发工具的不良嗜好,在进行编程和开发之前,需要解决工具的安装问题。你所需要的工具都需要从网络上获取,因此你需要更新你的网络源。网络源是一个仓库,通过在/etc/apt/sources.list下的URL更新仓库中的软件包列表,然后通过apt-get或aptitude工具从列表上下载、安装、卸载所需的软件包。

在此提供一些比较好的教育网内的源列表:

# 北邮Openware源,北邮校内人士首选源。曾经我说过这个源比较不稳定,但是后来经过验证,还是挺稳定的,推荐
deb ftp://openware.byr.edu.cn/pub/mirror/ubuntu/ intrepid main multiverse restricted universe
deb ftp://openware.byr.edu.cn/pub/mirror/ubuntu/ intrepid-backports main multiverse restricted universe
deb ftp://openware.byr.edu.cn/pub/mirror/ubuntu/ intrepid-proposed main multiverse restricted universe
deb ftp://openware.byr.edu.cn/pub/mirror/ubuntu/ intrepid-security main multiverse restricted universe
deb ftp://openware.byr.edu.cn/pub/mirror/ubuntu/ intrepid-updates main multiverse restricted universe

# 台湾高性能计算中心(NCHC)源:
deb http://free.nchc.org.tw/ubuntu/ intrepid main restricted multiverse universe
deb http://free.nchc.org.tw/ubuntu/ intrepid-updates main restricted multiverse universe
deb http://free.nchc.org.tw/ubuntu/ intrepid-security main restricted multiverse universe
deb http://free.nchc.org.tw/ubuntu/ intrepid-proposed main restricted multiverse universe
deb http://free.nchc.org.tw/ubuntu/ intrepid-backports main restricted multiverse universe

# 台湾交大(NCTU)源:
deb http://ubuntu.csie.nctu.edu.tw/ubuntu/ intrepid main multiverse restricted universe
deb http://ubuntu.csie.nctu.edu.tw/ubuntu/ intrepid-backports main multiverse restricted universe
deb http://ubuntu.csie.nctu.edu.tw/ubuntu/ intrepid-proposed main multiverse restricted universe
deb http://ubuntu.csie.nctu.edu.tw/ubuntu/ intrepid-security main multiverse restricted universe
deb http://ubuntu.csie.nctu.edu.tw/ubuntu/ intrepid-updates main multiverse restricted universe

从上述三个中挑选一个源,覆盖到/etc/apt/sources.list下即可。覆盖方法:

sudo gedit /etc/apt/sources.list

打开后挑选一个源,复制到文件中,覆盖原内容,保存退出。其中要注意的一点是,如果你的Ubuntu版本是8.04,那么保持源列表中的"hardy"不变,如果你的是Ubuntu 8.04,请将所有的"intrepid"改成"hardy",如果是7.10,那么改成"gutsy"。

安装完毕之后,请执行下列命令更新软件列表(仅仅是软件列表,还没有更新系统和下载软件):

sudo apt-get update

更新完毕之后,如果你的网速太慢,就不要执行更新操作了,凑合着用吧,如果速度还行,可以执行下列命令更新系统:

sudo apt-get dist-upgrade

更新或者没有更新完系统之后,可以选择安装中文输入法和中文语言包支持。这一步我一般是在图形界面下完成的:到系统(System)->系统管理(Administration)->语言支持(Language Support)中,勾选汉语(Chinese)选项,自动下载中文语言包和SCIM的拼音支持。

准备工作结束,可以开始安装编译器gcc了。

如果你只是运行sudo apt-get install gcc,那么当你写完一个c程序之后运行gcc test.c会提示你找不到头文件。那是因为你没有装libc-dev这个包。包含lib开头和dev结尾的软件包在Ubuntu下很流行,它表示这是一个开发库(developing library),其中包含了C语言标准头文件和库。在Ubuntu下另外有一个软件包集合了这些常用的C/C++开发工具,它的名字叫build- essential。所以你可以只运行下列命令就可以完成gcc的配置:

sudo apt-get install build-essential

gcc是一个强大的工具,目前我只是使用它来编译C、C++和ASM,关于gcc的更多使用方法,可以使用下列两个方法:

man gcc

http://gcc.gnu.org/onlinedocs/

至于man命令的作用,请运行man man-_-|||

接下去可以按相同的方法安装gdb,只需要一条命令:

sudo apt-get install gdb

然后谈谈vi。现在大家使用的vi基本上都是vim,可以使用方向键来控制移动,而Ubuntu自带的vi由于习惯问题让人很不适应,所以你应该安装vim-full这个软件,它包含了vim和gvim,后者是一个GUI化的vim编辑器:

sudo apt-get install vim-full

刚离开VS或者VC的你,可能不适应Linux下的编程环境。然而适应VI的操作是一个必须的技能,传说Linux程序员有三种,使用VI进行开发的,使用EMACS开发的,和使用其他进行开发的。如果你有兴趣了解emacs,可以运行下列命令:

sudo apt-get install emacs21

vi和emacs的使用,请访问下列站点:

http://vimdoc.sourceforge.net/htmldoc/usr_toc.html

http://www.gnu.org/software/emacs/manual/

至此,vi+gcc+gdb的开发环境基本上搭建完毕,进行操作系统课上的基础编程作业应该绰绰有余了。

  1. yunai
    2008年11月21日21:01

    今天发现你的网站在google搜索caspar的首位。。。
    今天刚把gcc和gdb等基本命令走了一下.我的8.04 emacs居然装不上!!不稳定版!!
    搭建嵌入式编译环境可以说一下吗?一定需要硬件环境(开发板)吗?

    • 2008年11月21日21:11

      @yunai, 8.04的emacs应该可以装上啊,我以前装过。不过我是VI用户,所以emacs我没怎么使用过。
      嵌入式我基本上不懂,开发环境一般都是gcc+gdb+vi,我见过的一些嵌入式开发都是要连接开发板编程的,不过因为不了解,我也不确定是不是一定要开发板才行。

      • yunai
        2008年11月22日10:18

        @Ant, 那你用什么写手机软件的?

        • 2008年11月22日10:28

          @yunai, 写手机软件和做嵌入式开发应该是两个概念。手机软件一般的开发流程是用J2ME或者其他公司提供的API写程序,这和平时写PC程序没有太大区别。写完后在模拟器上调试运行最后打包放到手机上跑就行了;嵌入式开发是指给嵌入式设备写驱动,这随时要调用设备的硬件中断,需要大量的汇编和C。

          • yunai
            2008年11月24日21:36

            @Ant, 这样阿。。我明白了..
            不好意思,问一个很白痴的问题:
            我就用了两个文件:yunai.c 和yunai.h
            makefile如下:
            #yunai
            yunai:yunai.o
            gcc -o yunai yunai.o
            yunai.o:yunai.c yunai.h
            gcc -c yunai.c -o yunai.o
            怎么就不行呢?
            yunai@yunai-laptop:/media/disk$ make
            makefile:3: *** 遗漏分隔符 。 停止。

            • 2008年11月24日21:45

              @yunai, 第二行第四行开头是TAB,不是空格。