编译文件夹下多个tar包
A. tarball方式编译安装及升级-make、patch
tarball方式编译安装及升级-make、patch1、概念:原码进行编译成二进制机构可执行程序,先要make与侦测程序一般是config一起生成编译连接文件makefile,再由makefile编译成可执行文件。Tarball其实是原码的tar打包与压缩的包。rpm是指linux商家帮你编译好了,省去了长时间编译而发布的包,但不同类型的系统就不能用。
www.dnjsb.com
函数库即提供外部调用的,有点像dll。2、gcc,是C语句的编译器,一般是先编译成目标文件,再连结成一个可执行文件。3、make可以方便进行编译,因为它把要编译的命令及顺序都写到makefile这个文件里了。
www.dnjsb.com
4、makefile文件放在程序的原码里的一级目录,它的语法:[root@www
~]#
vi
makefileLIBS
=
-lm
#这是变量OBJS
=
main.o
haha.o
sin_value.o
cos_value.oCFLAGS
=
-Wallmain:
${OBJS}gcc
-o
$@
${OBJS}
${LIBS}
<==那个
$@
就是
main
!$@
代表目前的标的(target)clean:rm
-f
main
${OBJS}#标的:有相关性原代码文件
#第二行开头要tab一下,这一行就是执行的命令,如脚本命令5、具体目录规则如下:
a、最好将
tarball
的原始资料解压缩到
/usr/local/src
当中;
b、安装时,最好安装到
/usr/local
这个预设路径下;
c、考虑未来的反安装步骤,最好可以将每个软体单独的安装在
/usr/local
底下;
d、为安装到单独目录的软体之
man
page
加入
man
path
搜寻:如果你安装的软体放置到
/usr/local/software/
,那么
man
page
搜寻的设定中,可能就得要在
/etc/man.config
内的
40~50
行左右处,写入如下的一行:
MANPATH
/usr/local/software/man
这样才可以使用
man
来查询该软体的线上文件!6、侦测配置程序./configure
--help
,可以查看支持参数及说明一般有的参数是安装到哪个目录的参数:--prefix=/path7、一般的步骤(以ntp为例):cd
/usr/local/srctar
-zxvf
/root/ntp-4.2.4p7.tar.gzcd
ntp-4.2.4p7/cat
INSTALL./configure
--help
|
more./configure
--prefix=/usr/local/ntpmake
clean;
makemake
check
#此步如果不检测也行make
install8、原码进行更新升级:
a、cat
~/main_0.1_to_0.2.patch
#查看第一行它的相对目录是什么样的
b、用patch
-p数字
<
patch_file进行更新,这里的数字表示旧的目录要去掉几个/,如果不去则用patch
-p1
<
patch_file,要根据a步来判断。如main-0.1/xxx
与
main-0.2/xxx
进行对比,而你现在就在main-0.1目录下,那么可以这样patch
-p1
<
../main_0.1_to_0.2.patch
c、一般会发布更新包,以.patch为后缀,且会标明从什么版本到什么版本,不能跨多版本升级的,要顺序升级,如跨了多个更新包,则要把之前的更新包一个个更新
d、make
clean;
make
make
check
#此步如果不检测也行
make
install
如果报错,可能就需要执行一下./configure,patch只是更新了有变化的原代码而已。
e、如果
patch
错误呢?我们的
patch
是可以还原的啊!透过patch
-R
<
../main_0.1_to_0.2.patch
即可。(main_0.1_to_0.2.patch只是个例子)
B. 写一个shell脚本,将该文件夹下的每一个文件夹打一个tar包,然后把这些tar包放到一个文件夹中
fordirnamein`ls-l|grep^d|awk'{print$9}'`
do
tarcvf/dest_dir/$dirname.tardirname
done
C. linux的tar打包多个文件夹里指定类型的文件
在log/里:
tar -cvf /tmp/my.tar log*/a.log