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
这条规则的作用是运行项目的测试脚本