Deb包制作,Rpm包熟悉,Makefile文件制作

Deb包制作

工具安装:

sudo apt-get install debhelper
sudo apt-get install dh-make

设置环境变量:

cat >>~/.bashrc <<EOF
DEBEMAIL="111@111.com"
DEBFULLNAME="111"
export DEBEMAIL DEBFULLNAME
EOF

保存:

source ~/.bashrc 

下载软件:elinks-upstream-0.13.1.tar.gz
地址:下载

创建文件夹:

mkdir ~/package

将下载的压缩包放入并解压:

tar -xf elinks-upstream-0.13.1.tar.gz

进入文件夹以后:

dh_make -f ../elinks-upstream-0.13.1.tar.gz

输入s后回车

执行:

dpkg-buildpackage -us -uc

测试deb包:

安装:

sudo dpkg -i <package>

卸载:

sudo dpkg -r <appname>

连同它的配置文件一起删除(如果有):

sudo dpkg -P <appname>

可以这样来确保程序已经被正确删除:

dpkg -l |grep <appname>

dpkg -l命令列出所以安装的包,然后用grep检索程序名。当正确卸载后,输出应为空。

Rpm包熟悉

相同点:
都是包管理工具,都属于二进制包

不同点:
rpm包主要用于redhat及分支如redhat,centos,Fedora等
deb包主要用于debian及分支如debian,ubuntu等。

rpm包相对来说版本不是最新的,但是比较稳定;而deb包则相对来说版本比较新,一般某个新软件出来说可能有deb包,但是使用过程中容易引起bugs。

rpm包:
rmp 是 LINUX 下的一种软件的可执行程序,你只要安装它就可以了。这种软件安装包通常是一个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm。

相关操作:

 rpm -ivh rpm包名    	#安装软件,下面是参数说明
 						##-i :install ,安装
    					##-v : --verbose ,显示详细信息
    					##-h:–hash,进度条
    					##–nodeps :安装前不需要检查依赖
 rpm -Uvh rpm包名 		#升级软件
 rpm -e rpm包名          #卸载软件,其中如果在加上选项–nodeps ,表示卸载软件时,不检查依赖。这样会使那些使用软件包的软件在此之后可能会不能正常工作
 rpm -qpi rpm包名        #查询软件包的详细信息:执行
 						###由于软件包比较多,一般会采取过滤。类如: rpm -qa | grep rpm软件包 
 rpm -qf rpm包名         #查询某个文件是属于那个rpm包的
 rpm -qpl rpm包名        #查该软件包会向系统里面写入哪些文件 

Makefile文件制作

概述:
一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

make在当前目录下寻找“Makefile”或“makefile”文件,首次执行make命令时,编译所有相关文件,之后再执行make命令时,以增量方式进行编译
注:许多tar格式的开源软件,解压后先执行./configure,再执行make,然后执行make install进行安装

语法规则:

目标 ... : 依赖 ...
	命令1   #注意每条命令之前必须有一个tab保持缩进
	命令2
	. . .

目标可以是文件名,指明make命令所要构建的对象;也可以是某个操作名称,称“伪目标”(例如make clean)

变量:
$符号表示取变量的值,当变量名多于一个字符时,使用"( )"

变量赋值
使用 “=”进行赋值,变量的值是整个Makefile中最后被指定的值

预定义变量
CC:c编译器的名称,默认值为cc。cpp c预编译器的名称默认值为$(CC) -E

CC = gcc

回显问题:
正常情况下,make打印每条命令,再执行该命令,称回声;

在命令前加@,关闭回声,即只输出命令的执行结果

@echo "clean done!"

伪目标 .PHONY:
为避免设置的伪目标名称在当前路径下有相同名称的文件,make命令发现该名称的文件已存在,便不再构建,也就不执行rm操作的情况发生,先将该名称声明为伪目标,因此make命令不会检查是否存在该名称的文件,每次执行对应的操作;

.PHONY:clean
clean:
	rm *.o

若make命令没有指定目标,默认执行Makefile文件中第一个目标;

常用命令:

make

make命令是最基本的命令,用于执行Makefile文件中的规则。通常,我们可以使用如下命令运行make:

 make [options] [target]

其中,options是可选的参数,用于控制make的行为。例如,我们可以使用“-j”参数指定并行编译的数量。target是要编译的目标文件名,可以省略。如果省略,则默认执行Makefile文件中的第一个目标

clean

clean命令用于删除生成的目标文件。在编译过程中,我们会生成一些中间文件和目标文件,这些文件可能会占用较多的磁盘空间。使用clean命令可以清理这些文件,释放磁盘空间。例如:

clean:
     rm -rf *.o

一般写在makefile文件末尾,这条规则的作用是删除所有以“.o”结尾的文件

all

all命令用于生成所有的目标文件。通常,我们在Makefile中会定义多个目标,使用all命令可以一次性编译所有目标。例如:

all: target1 target2 target3

这条规则的作用是编译target1、target2、target3三个目标

install

install命令用于将生成的文件安装到指定的目录中。在编译完成后,我们通常需要将生成的可执行文件或库文件安装到系统中,以便其他程序使用。例如:

install: all
    cp target /usr/local/bin/

这条规则的作用是将编译生成的target文件拷贝到“/usr/local/bin/”目录下

uninstall

uninstall命令用于卸载已安装的文件。在安装完成后,我们可能需要卸载已安装的文件,例如进行版本回滚。例如:

uninstall:
    rm /usr/local/bin/target

这条规则的作用是删除“/usr/local/bin/”目录下的target文件

自定义命令

除了上述常用命令外,Makefile还支持自定义命令。例如,我们可以定义一个命令来运行项目的测试:

test:
    ./run_tests

这条规则的作用是运行项目的测试脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值