Linux编程

原创 2004年04月13日 14:13:00

Linux编程
    GNU是一个充满梦想的世界,Linux是一个非常神奇的操作系统.系统应该开放,软件应该自由使用.自由的信念激发无数人的激情,为自由软件事业而奋斗.然而由于在Windows的统治下太长的时间,我们对自由软件,对Linux还非常的陌生.缺少应用软件支持,缺少用户.但这一切都无法阻挡自由软件事业的发展.让我们携起手来,为自由软件同盟而奋斗吧!


    程序是程序员交流的方式.可以在Linux下编写程序,为自由软件事业出一份力,是每一个Linux用户的愿望.我写这份教程的目的也在于此.以下是我的一些假定:
                                                1.读者熟悉C语言;                                                2.读者已经安装了一份Linux操作系统,并且已经正在运行;
3.本教程的所有开发环境均在字符界面完成,并且十分简单,只是一份入门教程;
    让我们开始吧!

vi的使用(edit)
    vi是Unix/Linux下最经典的文本编辑器之一.Linux的用户必须熟悉它.
  vi filename // 打开/创建一个文件(如果文件不存在的话)
    这样,就进入了vi的界面了.理解vi的关键是理解vi的两种模式:编辑模式和命令模式.一开始进入的就是命令模式.在命令模式下,可以使用一些命令,如保存,退出等.在编辑模式下,可以对文挡进行编辑,修改.
在任何时候,按ESC键,将进入命令模式.在命令模式下,按a(append),i(insert)可以进入编辑模式.一般的使用i即可.在命令模式下,按':',再在:后输入wq(write and quit),就可以存盘退出了.如果不想存盘,则在:后输入q!(强行退出).在命令模式下,直接shift+ZZ,也可以直接存盘退出,而省去了输入:的麻烦.
    下面是一个完整的创建C语言代码的完整的例子.
  vi hello.c
  // 命令模式,按i键进入编辑模式
  // 输入一个测试代码
  // 按ESC进入命令模式
  // 存盘的两种方式:
  A: 输入:+wq
  B: shift+ZZ
  // 放弃存盘的方式(本次编辑修改的内容无效)
  输入:+q!

gcc的使用(?)
    gcc是GNU的拳头产品.世界上威力强大的C语言编译器.如果你熟悉命令行编译的话,这个工具非常适合你.在Windows下也有它的一个版本.
    在介绍gcc的使用之前,让我们先回顾一下C语言的编译过程:
  hello.c(编译)->hello.o(连接)->hello//linux
  hello.c(编译)->hello.obj(连接)->hello.exe//windows
    在前面的例子中,我门已经有了一个C语言源程序,hello.c,下面我们将它编译连接成可执行文件
  gcc -o hello.c// 结果:我们得到一个以默认名称命名的可执行文件a.out
  gcc hello.c -c hello.o// -c选项代表编译,结果为目标代码hello.o
  gcc hello.o -o hello// -o选项代表连接,结果为可执行文件hello(无后缀名)
  gcc hello.c -o hello// 常规用法,一步到位,直接得到可执行文件
    Linux里,当前目录下的可执行文件和系统命令是有严格区分的.你想执行一个系统命令,如拷贝命令cp,直接输入cp回车就可以了;如果想运行当前目录下的一个可执行文件hello,则需要输入./hello,才行.这也是Linux的安全措施之一吧.

gdb的使用(debug)
    gdb是Linux下一个常用的调试工具.要想使用它对程序进行调试,在编译的时候注意要加上选项 -g,
gcc -g hello.c -o hello.这样得到的可执行文件中就加入了调试信息,通常文件也会变得很大.下面是它的用法:
  gdb hello// 调试hello
  gdb break main// break,设置断点,此处断点设在程序的开头,main函数的入口处
  gdb r// 开始运行程序,在断点处停止,本处为程序的开始
  gdb s// step,开始单步调试程序了,同时会打印出此处程序的源代码
  gdb print var// 打印变量的当前值,程序不会向前执行,var为变量名
  gdb r或者gdb q// 错误排除,让程序直接运行结束或直接退出.(gdb r运行完也不会退出gdb,请再输入一个q)

makefile的使用(?)
    makefile是用于多源代码文件项目管理的.举例说明,一个可执行文件abc由a.o,b.o,c.o连接而成;而a.o由a1.c,a2.c,a3.c编译而成,b.o由b1.c,b2.c,b3.c编译而成,c.o由c1.c,c2.c,c3.c编译而成.够复杂的.我们需要
  gcc a1.c a2.c a3.c -c a.o
  gcc b1.c b2.c b3.c -c b.o
  gcc c1.c c2.c c3.c -c c.o
  gcc a.o b.o c.o -o abc
    如果仅仅一个源文件a1.c发生变化,我们必须重新编译其它没有发生变化的程序,做无用功.这里的例子仍然很小,如果是一个有数百个源代码组成的工程,简化编译过程将十分必要.makefile由此而生.
    makefile由依赖关系和编译命令组成.依赖关系的写法是
    目标 : 依赖的文件1,依赖的文件2,依赖的文件3...
    编译命令直接写在依赖关系的下一行,注意,以一个tab退格键开头,四个空格不行
    我们以上面的例子写一个makefile文件.(makefile的默认文件名就是makefile,无后缀名)
  vi Makefile
  abc : a.o b.o c.o
 gcc a.o b.o c.o -o abc
  a.o : a1.c a2.c a3.c
 gcc a1.c a2.c a3.c -c a.o
  b.o : b1.c b2.c b3.c
 gcc b1.c b2.c b3.c -c b.o
c.o : c1.c c2.c c3.c
 gcc c1.c c2.c c3.c -c c.o
  执行makefile,系统就会根据源文件的最后修改时间决定,那些需要重新编译,而哪些不要.

几点学习linux编程的建议

我个人用了3、4年linux,从当初的小菜鸟到现在的大菜鸟,积累了一些经验,现在分享给大家,尤其是初学者。 弄linux的环境大体有3种办法: 在windows上安装cygwin在window...
  • High_High
  • High_High
  • 2012年02月18日 08:58
  • 37530

高手必读:Linux编程经典书籍

如何才能成为一个Linux编程高手?在这里笔者建议大家多读经典书籍,多读优秀的开源代码,多写代码,除了这些别无它法。接下来本文就向大家推荐一些公认的Linux编程经典图书。想要成为真正的Linux编程...
  • u012138828
  • u012138828
  • 2014年07月07日 17:24
  • 2514

Linux时间编程

1. time_ttime_t记录自1970年1月1日凌晨以来的秒数,在Linux/Unix上定义为long int类型,在32位系统上,time_t最多只能记录2,147,483,647秒,也就是说...
  • mcgrady_tracy
  • mcgrady_tracy
  • 2013年11月12日 14:29
  • 2966

Linux摄像头编程小结

http://blog.chinaunix.net/u/11445/showart.php?id=119461 linux下开发摄像头的程序,主要用的是 video4linux来做的,界面用qt...
  • BingKing88
  • BingKing88
  • 2011年11月25日 10:46
  • 1346

技术干货:Linux Shell 编程基础,看这一篇就够了!

技术干货:Linux Shell 编程基础,看这一篇就够了!
  • qq_22075977
  • qq_22075977
  • 2017年07月16日 19:36
  • 1765

linux下bluetooth编程(一)基础概念

一:Bluetooth基本概念:   Bluetooth是爱立信、诺基亚、东芝、IBM和Intel 5家公司在1998年联合推出的一项无线网络技术。其宗旨是提供一种短距离、低成本的无线传输...
  • wangzhen209
  • wangzhen209
  • 2015年11月26日 17:41
  • 1457

怎么在Linux下编程

先在终端中输入 vim test.c 回车进入vim编辑器,再按一下a键,进入编辑状态,然后输入如下C语言语句: #include int main() { printf(...
  • u012110719
  • u012110719
  • 2014年12月19日 23:49
  • 3486

linux下GCC编程基础

我们将会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 ------------------------------------...
  • ventry
  • ventry
  • 2006年06月01日 00:00
  • 4321

Linux系统编程——进程介绍

一、进程概述 我们平时写的 C 语言代码,通过编译器编译,最终它会成为一个可执行程序,当这个可执行程序运行起来后(没有结束之前),它就成为了一个进程。 程序是存放在存储介质...
  • lianghe_work
  • lianghe_work
  • 2015年06月23日 20:15
  • 1523

在LINUX下如何编程设置系统时间和IP地址

1.设置系统时间 #include  #include  #include  #include  #include  int set_date(struct tm *p_tm) { ...
  • a421701136
  • a421701136
  • 2014年12月03日 17:35
  • 431
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux编程
举报原因:
原因补充:

(最多只允许输入30个字)