【问题标题】:How to install own app on Ubuntu如何在 Ubuntu 上安装自己的应用程序
【发布时间】:2016-06-10 11:35:13
【问题描述】:

我在我的 Windows 机器上创建了一个应用程序,现在我想在我的 Linux 机器上安装它。它有几个头文件和源文件,所以我认为最好将它上传到 Github。我这样做了,我还创建了一个 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)

【问题讨论】:

  • GitHub与安装无关,只是存放代码的地方。您能否提供代码和makefile 的minimal reproducible example,并展开“很多错误”
  • makefile 的问题在于:cp -f $(PROG) /usr/sbin/ cp -f $(PROG).1 /usr/man/man1/ || cp -f $(PROG).1 /usr/local/man/man1/,而错误是“没有这样的文件或目录”。我试图自己解决它,但我失败了。此外,我没有提供可验证的代码示例,因为我要求替代而不是代码检查。但是,如果代码是强制性的,我会添加它。
  • @jonrsharpe 我添加了部分生成文件。希望对您有所帮助。
  • “没有这样的文件或目录”之前的错误消息部分是什么?
  • cp:无法创建常规文件“/usr/man/man1”:没有这样的文件或目录

标签: compilation makefile installation


【解决方案1】:

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

详情:

  • 不包括您对$(PROG)$(FILES)$(LIBS) 的定义。
  • 您尝试将文件复制到目录但未确保其存在。 install 实用程序通常用于代替 cp 来处理此类事情。

约定:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多