一个方便学习《Unix环境高级编程》的小脚本

本文介绍了一个用于简化《Unix环境高级编程》书中示例项目的编译过程的Shell脚本。该脚本能够自动创建所需的文件夹结构、生成Makefile及主C文件,并设置好编译环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习《Unix环境高级编程》的编译过程有点麻烦,敲命令行经常敲错,因此单独写了个小的shell脚本来生成相关工程:

有了这个东西,省去了一些麻烦,每次只需要make以下就行了:

代码如下:


#!/bin/bash
#	author: crane
#	date  : 2012-12-24

makeApueProject()
{
	mkdir $1
	exec 3>"$1/Makefile"
	echo "#------------------------apue make file------------------" >&3
	echo "#auto generated by shell script" >&3
	echo 'cc=gcc' >&3
        echo 'include=..' >&3
	echo 'lib=../libapue.a' >&3
	echo "$1 : $1.o" >&3
	echo "	\$(cc) -o $1 $1.o \$(lib)">&3
	echo "$1.o : $1.c" >&3
	echo "	\$(cc) -I\$(include) -c $1.c" >&3
	echo ".PHONY : clean">&3
	echo "clean :" >&3
	echo "	-rm $1 $1.o" >&3
	exec 3>&-

	exec 4>"$1/$1.c"
	echo '#include "apue.h"' >&4
	echo 'int main(int argc, char* argv[])'>&4
	echo '{' >&4
	echo "" >&4
	echo '	return 0;'>&4
	echo '}' >&4
	exec 4>&-
	echo "The project $1 has been generated!"
}

fun()
{
	echo "The Project may be exist!, delete it now?"
	echo '"yes" will delete the '  "$1 dir "  'and generate project,"no" will exit '
	while :
	do
		read res
		if [ "$res"="yes" ] 
		then
		rm -rf "$1"
		makeApueProject $1
		break
		elif [ "$res"="no" ] 
		then
		exit 0
		else
		echo 'Invalid input, please input "yes" or "no"'
		fi
	done
}

if [ $# -ne 1 ]
then
	echo "$# Please input project name!"
elif [ -d "$1" ]
then
fun $1
else
makeApueProject $1
fi



相关的apue.h 和libapue.a 要放置在工程的上层目录中


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值