如何在Ubuntu上安装自己的应用程序

时间:2016-06-10 11:35:14

标签: compilation makefile installation

我在我的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)

1 个答案:

答案 0 :(得分:0)

虽然您的基本方法很好,但您遗漏了一些细节,而且您违反了一些由于某种原因而建立的约定。

详细说明:

  • 不包括$(PROG)$(FILES)$(LIBS)的定义。
  • 您尝试将文件复制到目录而不确保其存在。通常使用install实用程序代替cp来处理这样的内容。

公约:

  • 您似乎仅在必要时才使用root权限。编译为普通用户;仅将make install作为root运行,例如使用sudo;或更好,甚至避免。
  • 您正在尝试将文件放入/usr/bin//usr/man,其中包管理系统会安装文件,因此您可能会将其混淆。别。如果您不需要制作系统上所有用户可以使用的第三方软件(例如您自己的软件),只需安装到/usr/local//opt即可。相应地调整$PATH$MANPATH。如果它仅供您个人使用,您可以安装到$HOME下的目录。
  • 将顶级目标目录安装到Makefile中的变量中。它通常被称为$(DESTDIR)