Compilation 如何在Ubuntu上安装自己的应用程序
我在我的Windows机器上创建了一个应用程序,现在我想在我的Linux机器上安装它。它有几个头文件和源文件,所以我认为最好把它上传到Github上。我这样做了,还创建了一个Makefile,但是当我尝试直接从文件夹安装它时,会出现很多错误 鉴于它只供个人使用,有没有办法手动编译每个文件,然后作为一个整体运行 生成文件:Compilation 如何在Ubuntu上安装自己的应用程序,compilation,makefile,installation,Compilation,Makefile,Installation,我在我的Windows机器上创建了一个应用程序,现在我想在我的Linux机器上安装它。它有几个头文件和源文件,所以我认为最好把它上传到Github上。我这样做了,还创建了一个Makefile,但是当我尝试直接从文件夹安装它时,会出现很多错误 鉴于它只供个人使用,有没有办法手动编译每个文件,然后作为一个整体运行 生成文件: .PHONY: all debug profile install uninstall clean all: $(PROG) $(PROG): $(FILES) $
.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)
虽然您的基本方法很好,但是您缺少一些细节,并且您正在打破一些基于某种原因而建立的惯例 详情:
- 不包括您对
、$(PROG)
和$(文件)
的定义$(LIBS)
- 您试图将文件复制到目录,但不确保其存在。通常使用
实用程序而不是install
来处理此类内容cp
- 您似乎没有仅在必要时才使用
权限。以普通用户身份编译;仅以root用户身份运行root
,例如使用makeinstall
;或者更好的是,避免这样做sudo
- 您正试图将文件放入包管理系统安装文件的
和/usr/bin/
中,因此可能会混淆它。不要。如果您需要让系统上的所有用户都可以使用第三方软件(如您自己的),只需安装到/usr/man
或/usr/local/
,它们都是为此而存在的。相应地调整/opt
和$PATH
。如果只是供您个人使用,您可以安装到$MANPATH
下的目录中$HOME
- 将要安装的顶级目标目录设置为
中的变量。它通常被称为Makefile
$(DESTDIR)
cp-f$(PROG)/usr/sbin/cp-f$(PROG).1/usr/man/man1/| | cp-f$(PROG).1/usr/local/man/man1/
,而错误是“没有这样的文件或目录”。我试图自己解决它,但失败了。此外,我没有提供可验证的代码示例,因为我要求提供一个替代方案,而不是代码检查。但是,如果代码是必需的,我将添加它。@jornsharpe我添加了makefile的一部分。希望有帮助。在“没有这样的文件或目录”之前的错误消息是什么?cp:无法创建常规文件“usr/man/man1”:没有这样的文件或目录