linux 开发需要

7 篇文章 0 订阅
4 篇文章 1 订阅

自己开发所感兴趣的一些资料,整理于网络

 

1 Linux 程序开发的一些基础概念

 

在设置 Linux 的系统路径时,使用冒号分隔每个路径名。如 :

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11"

Linux 中的程序有两种,一种是可执行程序,与 Windows 下的 .exe 文件类似,一种是脚本,与 Windows 下的 .bat 文件类似。

Linux 中常用的程序存放路径有以下几个:

/bin ,该路径存放系统启动时需要使用的程序。

/usr/bin ,该路径存放用户需使用的标准程序。

/usr/local/bin ,该路径存放本地安装的程序。

Linux 使用斜杠 "/" 分隔路径名,而不是 Windows 的反斜杠 "/"

Linux 下的 C 编译器使用 GCC ,由于历史的原因,在 POSIX 兼容的操作系统中, C 编译器都叫 cc ,所以 Linux 下也有一个 cc 命令,它是一个到 gcc 的软链接。

开发工具,多数位于 /usr/bin /usr/local/bin 目录下。

头文件,位于 /usr/include 目录。头文件包含有常量定义、系统调用和库函数调用的声明。这是系统默认的头文件存放路径,在编译程序时,编译器会自动查找该目录。 gcc 编译器在编译程序时也可用 -I 参数指定另外的头文件路径。如:

gcc -I/usr/local/myinclude test.c
库文件,库是一组已编译的函数集合,可方便我们重用代码。默认存放在 /lib /usr/lib 目录。库文件可分为静态和共享两类。

.a ,静态库文件。使用静态库将会把所有的库代码引入程序,占用更多的磁盘空间和内存空间,所以一般建议使用共享库。

.so ,共享库文件。使用共享库的程序不包含库代码,只在程序运行才调用共享库中的代码。

在编译时可用包含路径的库文件名或用 -l 参数指定使用的库文件, /usr/lib/libm.a 等价于 -lm 。如 :

gcc -o hello hello.c /usr/lib/libm.a
或用 -l 参数写成
gcc -o hello hello.c -lm
如果我们要使用的库文件不在默认位置,在编译程序时可用 -L 参数指定库文件的路径。下面例子使用了 /usr/hello/lib 目录下的 libhello 库文件:

gcc -o hello -L/usr/hello/lib hello.c -lhello
创建和使用静态库。

一、工具的使用

   1 、学会使用 vim/emacs vim/emacs linux 下最常用的源码编辑具,不光要学会用它们编辑源码,还要学会用它们进行查找、定位、替换等。新手的话推荐使用 vim ,这也是我目前使用的文本编辑器。

   2 、学会 makefile 文件的编写规则,并结合使用工具 aclocal autoconf automake 生成 makefile 文件。

   3 、掌握 gcc gdb 的基本用法。掌握 gcc 的用法对于构建一个软件包很有益处,当软件包包含的文件比较多的时候,你还能用 gcc 把它手动编译出来,你就会对软件包中各个文件间的依赖关系有一个清晰的了解。

   4 、掌握 svn/cvs 的基本用法。这是 linux ,也是开源社区最常用的版本管理系统。可以去试着参加 sourceforge 上的一些开源项目。

  二、 linux/unix 系统调用与标准 C

  系统调用应用软件与操作系统的接口,其重要性自然不用说,一定要掌握。推荐学习资料为 steven 先生的 UNIX 环境高级编程 ( 简称 APUE)

  三、库的学习

  无论是在哪个平台做软件开发,对于库的学习都很重要, linux 下的开发库很多,我主要介绍一下我常常用到的一些库。

   1 glib

   glib 库是 gtk+ gnome 的基础库,并具是跨平台的,在 linux unix windows 下都可以用。 glib 库对于 linux 平台开发的影响就像 MFC windows 平台开发的影响一样,很多开源项目都大量的使用了 glib 库,包括 gimp gnome gaim evolution linux 下的集群软件 heartbeat. 因为 glib 库自带有基本的数据结构实现,所以在学习 glib 库的时候可以顺便学习一下基本的数据结构 ( 包括 链表、树、队列和 hash )

   2 libxml

   libxml linux 平台下解析 XML 文件的一个基础库,现在很多实用软件都用 XML 格式的配置文件,所以也有必要学习一下。

   3 readline

   readline 库是 bash shell 用的库,如果要开发命令行程序,那么使用 readline 库可以减少很多工作量,比如 bash 里的命令行自动补全,在 readline 里就已经 有实现,当然你也可以用自己的实现替代库的行为。 readline 库有很多网站介绍的,只要 google 一下 readline 就可以找到一堆了。

   4 curses

   curses 库以前是 vi 程序的一部分,后来从 vi 里提取出来成为一个独立的库。 curses 库对于编写终端相关的程序特别有用,比如要在终端某一行某一列定位输出, 改变终端字体的颜色和终端模式。 linux 下的 curses 库用的是 GNU 实现的 ncurses(new curses 的意思 )

   5 gtk+ KDE

这两个库是开发 GUI 应用程序的基础库,现在 linux 下的大部份 GUI 程序都是基于这两个库开发的,对于它们 的学习也是很有必要的。

6 libnet

非常好的网络程序开发库,包括入侵检测等

  四、网络的学习

  网络这个东西太宽了,推荐学习资料 steven 先生的 UNIX 网络编程 ( 简称 UNP) TCP/IP 协议详解,更进一步的话可以学习使用 libnet 编写网络程序。

Unix 系统平台上的网 络安全工具开发中,目前最为流行的 C API library libnet libpcap libnids libicmp 等。它们分别从不同层次和角度提供了不同的功能函数。使网络开发人员能够 忽略网络底层细节的实现,从而专注于程序本身具体功能的设计与开发。其中,

 



* libnet 提供的接口函数主要实现和封装了数据包的构造和发送过程。

 

* libpcap 提供的接口函数主要实现和封装了与数据包截获有关的过程。

 

* libnids 提供的接口函数主要实现了开发网络入侵监测系统 所必须的一些结构框架。

 

* libicmp 等相对较为简单,它封装的是 ICMP 数据包的主要处理过程 ( 构造、发送、接收等 )

 



利用这些 C 函数库的接口,网络安全工具开发人员可以很方便地编写出具有结构化强、健壮性好、可移植性高等特点的程序,如 scanner sniffer firewall IDS 等。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值