Linux作业 使用make命令和分析makefile文件
Posted _DiMinisH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux作业 使用make命令和分析makefile文件相关的知识,希望对你有一定的参考价值。
使用make命令和分析makefile文件
diction是一个经典的Unix小工具,用来检测使用不当的英文短语。
请前往 http://www.gnu.org/software/diction/ 下载diction源码包
下载地址
(diction源码包:http://ftp.gnu.org/gnu/diction/,diction-0.7.tar.gz)
1.按以下命令将diction安装到当前目录
./configure --prefix=$PREFIX
make
make install
(其中,PREFIX请先在当前目录创建dic目录,并使用dic目录的绝对路径)
测试diction命令的使用,(测试用例请参考share/diction/C中的短语)
(1).下载完成放到Linux系统中如下图
(2). 解包
使用命令tar -xvf
完成后得到一个diction-0.7目录文件
里面的文件如图
(3). 进入目录 使用./configure --prefix=安装路径
–prefix=安装路径
创建了一个目录ddd,指明了使用make命令后文件会安装到ddd目录下
命令执行完后,会出现Makefile文件
(4). 使用make install命令安装在这里插入图片描述
检查一下ddd目录
得到了安装好的文件
2. 请简要分析Makefile文件
(参考Makefile使用指南 https://makefiletutorial.com/ )
(1). 使用vim文本编辑器,查看Makefile文件
来到Makefike所在的文件夹
vim Makefile
(2). 分析
VERSION= 0.7 # 版本号
srcdir= . # 源目录
prefix= ../dir/ # 安装目录
exec_prefix= $prefix # 执行目录, 这里引用了变量prefix, 所以值为 ../dir/
BINDIR= $exec_prefix/bin
MANDIR= $prefix/man # man命令的路径, 在安装目录下的/man
SHAREDIR= $prefix/share
INSTALL= /usr/bin/install -c
INSTALL_PROGRAM=$INSTALL
INSTALL_DATA= $INSTALL -m 644 # 安装时间
CC= gcc # CC变量的值为gcc, 以后引用均用gcc代替
CFLAGS= -g -O2 -g -Wmissing-prototypes -Wstrict-prototypes -Wcast-qual -Wpointer-arith -
Wcast-align -Wwrite-strings -Wmissing-declarations -Wnested-externs -pedantic -fno-common
# 每个系统有不一样的参数
CPPFLAGS= -I. -DSHAREDIR=\\"$(SHAREDIR)\\" -DVERSION=\\"$(VERSION)\\" # C++文件的参数
LDFLAGS= -g # 变量LDFLAGS的值为 -g
LIBM= -lm # 链接库
# 第一条规则 名字是 all
all: diction style diction.1
diction: diction.o sentence.o misc.o getopt.o getopt1.o
$(CC) -o $@ $(LDFLAGS) diction.o sentence.o misc.o \\ # gcc -o diction.o sentence.o misc.o getopt.o
getopt1.o -g diction.o sentence.o misc.o 使用gcc, 生成目标文件
getopt.o getopt1.o $(LIBS)
style: style.o sentence.o misc.o getopt.o getopt1.o
$(CC) -o $@ $(LDFLAGS) style.o sentence.o misc.o \\
getopt.o getopt1.o $(LIBM) $(LIBS)
diction.1: diction.1.in Makefile
sed -e s+/usr/share+$(SHAREDIR)+ diction.1.in >$@
# install规则, 执行完all的命令后, 会执行下面的一系列命令
install: all
$(INSTALL) -m 755 -d $(BINDIR)
$(INSTALL_PROGRAM) -s diction $(BINDIR)/diction
$(INSTALL_PROGRAM) -s style $(BINDIR)/style
$(INSTALL) -m 755 -d $(SHAREDIR)/diction
$(INSTALL_DATA) de $(SHAREDIR)/diction/de
$(INSTALL_DATA) en $(SHAREDIR)/diction/en
(cd $(SHAREDIR)/diction; rm -f C; ln en C)
$(INSTALL) -m 755 -d $(MANDIR)/man1
$(INSTALL_DATA) diction.1 $(MANDIR)/man1/diction.1
$(INSTALL_DATA) style.1 $(MANDIR)/man1/style.1
install.msg:
gencat -o $prefix/share/locale/en_US/LC_MESSAGES/diction.cat diction-en.msg sentence-en.msg
gencat -o $prefix/share/locale/en_US/LC_MESSAGES/style.cat style-en.msg sentence-en.msg
#script# clean
clean:
rm -f *.out core *.o diction.1 # clean规则, 使用rm命令, 删除所有指定的文件
#
# clobber
# 该规则执行完clean规则后, 还要执行rm -f ...
clobber: clean
rm -f diction style config.cache config.h config.log config.status Makefile
#
# tar
# tar规则
tar: clobber
(b=`pwd`; b=`basename $$b`; cd ..; tar zcvf $$b.tar.gz $$b/COPYING $$b/INSTALL $$b/Makefile.in
$$b/README $$b/configure $$b/install-sh $$b/de $$b/en $$b/[a-z]*.*)
#
以上是关于Linux作业 使用make命令和分析makefile文件的主要内容,如果未能解决你的问题,请参考以下文章