快速编译并执行csapp程序

现在要实现通过c file.c来执行两个过程:

# 1. 根据c文件名生成对应的输出文件 
gcc -I/home/crx/study/csapp/code/include /home/crx/study/csapp/code/src/csapp.c file.c -o file

# 2. 执行输出文件
./file

通过chatgpt的方案是,使用脚本来根据输入文件名自动生成输出文件名。

  1. 创建compile-csapp.sh脚本

    vim ~/bin/compile-csapp.sh
    
  2. 编辑脚本文件

    #!/bin/bash
    
    # 检查是否提供了源文件作为参数
    if [ $# -eq 0 ]; then
      echo "Usage: c <source_file>"
      exit 1
    fi
    
    # 获取文件名,去掉扩展名 .c
    filename=$(basename "$1" .c)
    
    # 编译源文件并链接
    gcc -I/home/crx/study/csapp/code/include /home/crx/study/csapp/code/src/csapp.c "$1" -o "$filename"
    
    # 执行生成的可执行文件
    ./"$filename"
    
    • “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行。
  3. 放权限

    chmod +x ~/bin/compile-csapp.sh
    
  4. 确保~/binPATH

    为了让系统能够识别c命令并执行,需要确保~/bin目录在PATH 环境变量中。

    打开 ~/.bashrc 文件:

    vim ~/.bashrc
    

    将指令c与脚本compile-csapp.sh链接

    alias c="~/bin/compile-csapp.sh"
    
  5. 刷新./bashrc

    source ~/.bashrc
    

此时在/home/crx/study/csapp/code/ecf目录执行c fork.c

crx@ubuntu:ecf$ c fork.c 
parent: x=0
child : x=2

crx@ubuntu:ecf$ c
Usage: c <source_file>

可以看到已经实现了我们想要的结果。

posted @ 2024-12-10 19:03  上山砍大树  阅读(3)  评论(0编辑  收藏  举报