您的当前位置:首页>新品 > 正文

每日速看!install安装命令的常见用法 install有哪些优点?

来源:CSDN 时间:2022-12-12 15:49:39

说明

Linux C/C++项目构建过程,有个必要的步骤“install”,在Makefile中时常会有一个专门的recipe来做这件事。安装流程需要做以下类型事情: 文件的拷贝(最基本)目录结构的创建程序的strip文件的属性,权限,ower等设置…

实现


(资料图)

对于初学者可以会采用cp、mkdir、strip、chmod等基础命令组合来完成项目的安装工作,但是在稍大项目中,你会发现使用cp等基础命令会需要写很多相似甚至重复的代码以及完成一项工作需要使用多个基础命令,这时可以采用一些更高级的命令,例如:install。

install

install是专门的安装命令, 常见用法如下:

用法:install [选项]... [-T] 源文件 目标文件 或:install [选项]... 源文件... 目录 或:install [选项]... -t 目录 源文件... 或:install [选项]... -d 目录...     --backup[=CONTROL]为每个已存在的文件创建备份  -b类似--backup 但不接受参数  -c(忽略)  -C, --compare比较每组源文件和目标文件,在一些情况下不修改目标文件  -d, --directory将所有参数视为目录名称;为指定的目录创建所有组件  -D                  create all leading components of DEST except the last,                        or all components of --target-directory,                        then copy SOURCE to DEST  -g, --group=GROUP   set group ownership, instead of process" current group  -m, --mode=MODE     set permission mode (as in chmod), instead of rwxr-xr-x  -o, --owner=OWNER   set ownership (super-user only)  -p, --preserve-timestamps修改源文件的访问/修改时间以与目标文件保持一致  -s, --strip拆解符号表      --strip-program=程序指定拆解二进制文件的程序  -S, --suffix=后缀覆盖常用备份文件后缀  -t, --target-directory=目录将源文件所有参数复制到指定目录  -T, --no-target-directory将目标文件视为普通文件  -v, --verbose创建目录时显示其名称      --preserve-context  preserve SELinux security context  -Z                      set SELinux security context of destination                            file to default type      --context[=CTX]     like -Z, or if CTX is specified then set the                            SELinux or SMACK security context to CTX      --help显示此帮助信息并退出      --version显示版本信息并退出* 详细请看help信息

创建目录结构

install [选项]... -d 目录...* 递归创建不存在的目录install -d install/lib install/www# 类似于 mkdir -p install/lib install/www

创建目录结构同时拷贝文件

install -D libxxxx.so install/lib/libxxxx.so# 类似于 mkdir -p install/lib/ && cp libxxxx.so install/lib/libxxxx.so

拷贝程序的同时进行strip

install -s --strip-program=strip xxx xxx

设置文件权限

install -m 0755 targets /usr/bin

遇到问题

暂时未找到方法处理动态库的软链接文件,拷贝后变成了实体文件。

install 的优点

如果目标文件已存在,cp会先清空文件后往里写入新文件,而install则会先删除掉原先的文件然后写入新文件,如果往正在 使用的文件中写入内容,cp可能会导致一些问题,例如:写入正在执行的文件可能会失败,往已经在持续写入的文件句柄中写入新文件会产生错误的文件。而使用 install先删除后写入(会生成新的文件句柄,新老文件句柄不同,相当于操作的不同文件)的方式去安装就能避免这些问题了,例如:使用cp覆盖一个正在运行的程序文件,经常会提示 "text busy"。install在拷贝的同时可以设置目标文件的权限,不像使用cp方式拷贝文件仅仅拷贝文件,容易出现目标文件权限问题,例如:原始文件没有执行权限,cp后也没有执行权限,而install -m可以在拷贝的同时设置目标文件的权限。

标签:

最新新闻:

新闻放送
Top