mkdir VS mkdir -p

在Linux系统中,mkdir命令配合-p参数能够方便地递归创建多级目录。例如,`mkdir -p aaa/bbb/ccc`会确保所有父目录存在,即使它们之前不存在,从而成功创建aaa/bbb/ccc路径。这个功能对于快速构建复杂的目录结构非常有用。

在linux系统中,mkdir命令用于创建目录,mkdir 有一个参数-p,用于递归创建目录。

例如如下命令:

mkdir aaa/bbb/ccc

 可能不成功,因为如果aaa或者 aaa/bbb目录不存在,则无法创建aaa/bbb/ccc目录了;但是,如果用如下命令:

mkdir -p aaa/bbb/ccc

则创建目录就会成功。

mkdir -p aaa/bbb/ccc 的用途就是可以递归创建多级目录,若aaa目录不存在,则先创建aaa目录,若aaa/bbb目录不存在,则继续创建aaa/bbb,然后在aaa/bbb目录里创建ccc目录。

### 配置脚本生成 `config.status` 和相关文件的过程 在 GNU Autotools 工具链中,`configure` 脚本的主要任务是检查系统的配置并生成适合当前环境的构建文件。具体来说,`configure` 脚本会生成 `config.status` 文件,该文件是一个可执行脚本,用于实际生成 `Makefile`、`config.h` 等文件[^1]。 #### 生成 `config.status` 的过程 `configure` 脚本通过解析 `configure.ac`(或旧版本中的 `configure.in`)来生成 `config.status`。这个过程包括以下几个关键步骤: - **宏展开**:`configure` 脚本根据 `configure.ac` 中定义的宏进行扩展,这些宏描述了需要检测的功能和特性。 - **模板处理**:对于每个需要生成的文件(如 `Makefile.in` 或 `config.h.in`),`configure` 脚本会生成一个对应的模板文件。 - **创建 `config.status`**:最终生成的 `config.status` 脚本包含了所有检测结果,并能够根据这些结果生成目标文件。 #### 创建 `Makefile` 和 `config.h` - **`Makefile`**:`configure` 脚本会将 `Makefile.in` 模板文件中的占位符替换为实际值,并生成最终的 `Makefile`[^2]。 - **`config.h`**:如果项目需要生成 `config.h` 文件,则 `configure` 脚本会基于 `config.h.in` 模板文件生成具体的 `config.h` 文件,其中包含系统相关的定义[^3]。 #### 执行 `mkdir` 命令以创建目录 在某些情况下,`configure` 脚本可能会执行 `mkdir` 命令来创建必要的目录。例如: - **依赖目录 (`depdir`)**:当使用依赖跟踪功能时,可能需要创建一个目录来存储依赖信息。 - **调试符号目录 (`gdbdepdir`)**:如果项目支持调试符号分离,可能需要创建一个目录来存储调试信息。 以下是 `configure` 脚本中可能涉及的 `mkdir` 命令示例: ```bash mkdir -p "$depdir" mkdir -p "$gdbdepdir" ``` 上述命令确保即使父目录不存在,也会递归地创建所需的目录结构。 --- ### 示例代码 以下是一个简化的 `configure` 脚本片段,展示如何生成 `config.status` 并执行 `mkdir` 命令: ```bash #!/bin/sh # 检查是否存在输入模板文件 if [ ! -f Makefile.in ]; then echo "Error: Makefile.in not found." exit 1 fi # 生成 config.status echo "#!/bin/sh" > config.status echo "sed 's,@CC@,gcc,g' < Makefile.in > Makefile" >> config.status chmod +x config.status # 创建依赖目录 depdir=deps mkdir -p "$depdir" # 创建调试符号目录 gdbdepdir=gdb-symbols mkdir -p "$gdbdepdir" ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值