快速编译并执行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的方案是,使用脚本来根据输入文件名自动生成输出文件名。
-
创建
compile-csapp.sh
脚本vim ~/bin/compile-csapp.sh
-
编辑脚本文件
#!/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"
- “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行。
-
放权限
chmod +x ~/bin/compile-csapp.sh
-
确保
~/bin
在PATH
中为了让系统能够识别
c
命令并执行,需要确保~/bin
目录在PATH
环境变量中。打开
~/.bashrc
文件:vim ~/.bashrc
将指令
c
与脚本compile-csapp.sh
链接alias c="~/bin/compile-csapp.sh"
-
刷新
./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>
可以看到已经实现了我们想要的结果。