3.7 使用 autotools

在上一小节,读者已经了解到了make 项目管理器的强大功能。的确,Makefile 可以帮助make 完成它的使命,但要承认的是,编写Makefile 确实不是一件轻松的事,尤其对于一个较大的项目而言更是如此。那么,有没有一种轻松的手段生成Makefile而同时又能让用户享受make 的优越性呢?本节要讲的autotools 系列工具正是为此而设的,它只需用户输入简单的目标文件、依赖文件、文件目录等就可以轻松地生成Makefile了,这无疑是广大用户的所希望的。另外,这些工具还可以完成系统配置信息的收集,从而可以方便地处理各种移植性的问题。也正是基于此,现在Linux 上的软件开发一般都用autotools 来制作Makefile,读者在后面的讲述中就会了解到。

3.7.1 autotools使用流程

正如前面所言,autotools 是系列工具,读者首先要确认系统是否装了以下工具(可以用which命令进行查看)。

  • · aclocal
  • · autoscan
  • · autoconf
  • · autoheader
  • · automake

使用autotools主要就是利用各个工具的脚本文件以生成最后的Makefile。其总体流程是这样的。 Continue reading

linux下which、whereis、locate、find 命令的区别

我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索。这些是从网上找到的资料,因为有时很长时间不会用到,当要用的时候经常弄混了,所以放到这里方便使用。
which       查看可执行文件的位置
whereis    查看文件的位置
locate       配 合数据库查看文件位置
find          实际搜寻硬盘查询文件名称

1、which
语法:
[root@redhat ~]# which 可执行文件名称
例如:
[root@redhat ~]# which passwd
/usr/bin/passwd
which是通过 PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件 Continue reading

SEO URL的优化方案【转】

针对搜索引擎优化(SEO),页面URL的布局与呈现是影响排名和网站索引率的重要因素之一。对于搜索引擎而言,URL是它们找到一个网页的入口,URL的好坏会直接影响搜索引擎对一个网站的索引及理解程度。对于用户,URL会直接显示在搜索结果中,从而影响人们的点击意愿。因此一个好的URL结构无论是对搜索引擎,还是用户,都有着非常重要的作用。在本文中,我们将详细探讨针对SEO的URL优化技巧,但同时也想提醒大家,对于一个现有的网站,URL的改动需要谨慎。URL的改动会牵扯到原有URL权重的转移等问题,因此除非在万不得已的情况下,尽量不要改动现有的URL。但如果你是在策划一个新的网站或者生成新的页面,那么就让我们来探讨一下如何得到一个完美的URL吧。
1. URL愈短愈好
无论是搜索引擎,还是浏览者,都喜欢简短的URL。URL的层级不宜过多,尽量控制在4级之内。虽然搜索引擎仍然会抓取四级之后的页面,但页面的权重会大大降低。 Continue reading

3.6.4 Make管理器的使用

使用Make管理器非常简单,只需在make命令的后面键入目标名即可建立指定的目标,如果直接运行make,则建立Makefile中的第一个目标。

此外 make 还有丰富的命令行选项,可以完成各种不同的功能。下表3.17 列出了常用的make命令行选项。

表3.17 make的命令行选项

命 令 格 式 含 义

-C dir 读入指定目录下的Makefile

-f file 读入当前目录下的file文件作为Makefile

-i 忽略所有的命令执行错误

-I dir 指定被包含的Makefile所在目录

-n 只打印要执行的命令,但不执行这些命令

-p 显示make变量数据库和隐含规则

-s 在执行命令时不显示命令

-w 如果make在执行过程中改变目录,则打印当前目录名

3.6.3 Makefile规则

Makefile 的规则是Make 进行处理的依据,它包括了目标体、依赖文件及其之间的命令语句。一般的,Makefile 中的一条语句就是一个规则。在上面的例子中,都显示地指出了Makefile中的规则关系,如“$(CC) $(CFLAGS) -c $< -o $@”,但为了简化Makefile的编写,make还定义了隐式规则和模式规则,下面就分别对其进行讲解。

1.隐式规则

隐含规则能够告诉make 怎样使用传统的技术完成任务,这样,当用户使用它们时就不必详细指定编译的具体细节,而只需把目标文件列出即可。Make 会自动搜索隐式规则目录来确定如何生成目标文件。如上例就可以写成:

OBJS = kang.o yul.o

CC = Gcc

CFLAGS = -Wall -O -g

sunq : $(OBJS)

$(CC) $^ -o $@

为什么可以省略后两句呢?因为Make的隐式规则指出:所有“.o”文件都可自动由“.c” Continue reading

3.6.2 Makefile变量

上面示例的Makefile在实际中是几乎不存在的,因为它过于简单,仅包含两个文件和一个命令,在这种情况下完全不必要编写Makefile 而只需在Shell 中直接输入即可,在实际中使用的Makefile往往是包含很多的文件和命令的,这也是Makefile产生的原因。下面就可给

出稍微复杂一些的Makefile进行讲解:

sunq:kang.o yul.o

Gcc kang.o bar.o -o myprog

kang.o : kang.c kang.h head.h

Gcc –Wall –O -g –c kang.c -o kang.o

yul.o : bar.c head.h

Gcc – Wall –O -g –c yul.c -o yul.o

在这个Makefile中有3 个目标体(target),分别为sunq、kang.o和yul.o,其中第一个目标体的依赖文件就是后两个目标体。如果用户使用命令“make sunq”,则make管理器就是找到sunq目标体开始执行。 Continue reading

3.6.1 Makefile基本结构

3.6.1 Makefile基本结构

Makefile 是Make 读入的惟一配置文件,因此本节的内容实际就是讲述Makefile 的编写规则。在一个Makefile中通常包含如下内容:

  • 需要由make工具创建的目标体(target),通常是目标文件或可执行文件;
  • 要创建的目标体所依赖的文件(dependency_file);
  • 创建每个目标体时需要运行的命令(command)。

它的格式为:

target: dependency_files

command

例如,有两个文件分别为hello.c 和hello.h,创建的目标体为hello.o,执行的命令为gcc Continue reading

linux的七个运行级别及chkconfig的用法

所谓运行级别简单点来说,运行级别就是操作系统当前正在运行的功能级别。级别是从0到6,具有不同的功能。这些级别定义在/ect/inittab文件中。这个文件是init程序寻找的主要文件,最先运行的服务是那些放在/ect/rc.d目录下的文件。

一、Linux的运行级别:

Linux下的7个运行级别:

0:系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动,机器关闭。
1:单用户工作状态,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。
2:多用户状态,没有NFS支持。
3:完整的多用户模式,有NFS,登陆后进入控制台命令行模式。
4:系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5:X11控制台,登陆后进入图形GUI模式,XWindow系统。
6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。运行init6机器就会重启。

标准的Linux运行级别为3或5 Continue reading

apache突然出现Too many errors in select loop. Child process exiting的解决办法

[Fri Mar 13 19:30:08 2009] [notice] Child 2012: Acquired the start mutex.
[Fri Mar 13 19:30:08 2009] [notice] Child 2012: Starting 250 worker threads.
[Fri Mar 13 19:30:08 2009] [notice] Child 2012: Listening on port 80.
[Fri Mar 13 19:30:08 2009] [error] (OS 10038)An operation was attempted on something that is not a socket.  : Too many errors in select loop. Child process exiting.
[Fri Mar 13 19:30:08 2009] [notice] Child 2012: Exit event signaled. Child process is ending.
[Fri Mar 13 19:30:09 2009] [notice] Child 2012: Released the start mutex Continue reading

CentOS(RedHat)安装Adobe Flash Player插件 For firefox全过程

随便打开一个带Flash的网站,提示需要安装插件,使用firefox自带功能安装失败(图1所示)。
浏览器默认下载安装的插件失败之后,点“手动安装”会自动跳转到Adobe Flash Player下载页面:

或者直接先打开Adobe Flash Player下载页面:

http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash

选择”.rpm For Linux“ 显示并下载:

下载完后执行安装:

[root@CentOS Desktop]# rpm -ivh flash-plugin-9.0.124.0-release.i386.rpm

Preparing…########################################### [100%]

1:flash-plugin ########################################### [100%]

[root@CentOS Desktop]#

安装成功后重新重动系统既可。