我在我的Windows机器上创建了一个应用程序,现在我想在我的Linux机器上安装它。它有几个头文件和源文件,所以我认为最好将它上传到Github上。我这样做了,我也创建了一个Makefile,但是当我尝试直接从文件夹安装它时,我遇到了很多错误。
鉴于它仅供个人使用,有没有办法手动编译每个文件然后作为一个整体运行?
Makefile:
.PHONY: all debug profile install uninstall clean
all: $(PROG)
$(PROG): $(FILES)
$(CC) $(CCFLAGS) -o $(PROG) $(FILES) $(LIBS)
debug: $(FILES)
$(CC) $(DEBUGFLAGS) -o $(PROG) $(FILES) $(LIBS)
profile: $(FILES)
$(CC) $(CCFLAGS) -pg -o $(PROG) $(FILES) $(LIBS)
install: $(PROG)
cp -f $(PROG) /usr/sbin/
cp -f $(PROG).1 /usr/man/man1/ || cp -f $(PROG).1 /usr/local/man/man1/
uninstall:
rm -f /usr/sbin/$(PROG)
rm -f /usr/man/man1/$(PROG).1 || rm -f /usr/local/man/man1/$(PROG).1
clean:
rm -f $(PROG)
答案 0 :(得分:0)
虽然您的基本方法很好,但您遗漏了一些细节,而且您违反了一些由于某种原因而建立的约定。
详细说明:
$(PROG)
,$(FILES)
和$(LIBS)
的定义。install
实用程序代替cp
来处理这样的内容。公约:
root
权限。编译为普通用户;仅将make install
作为root
运行,例如使用sudo
;或更好,甚至避免。/usr/bin/
和/usr/man
,其中包管理系统会安装文件,因此您可能会将其混淆。别。如果您不需要制作系统上所有用户可以使用的第三方软件(例如您自己的软件),只需安装到/usr/local/
或/opt
即可。相应地调整$PATH
和$MANPATH
。如果它仅供您个人使用,您可以安装到$HOME
下的目录。Makefile
中的变量中。它通常被称为$(DESTDIR)
。