我有一个包含文件的文件夹main.cc
main.o
Makefile
prog
prog.pro
,但prog.pro.user
在安装时遇到了问题。这是某人编写的程序,它不能作为文件公开提供.deb
。我使用了以下命令:
make
导致:make: Nothing to be done for 'first'.
install
导致:install: missing file operand.
prog
导致:prog: command not found
./prog
导致:QFSFileEngine::open: No file name specified The device must be readable. Error loading the info.xml file
sudo make && make install
导致:make: *** No rule to make target '../../../../anaconda/mkspecs/linux-g++/qmake.conf, needed by 'Makefile'. Stop.
./configure
导致:bash: ./configure: No such file or directory
我还右键单击了 prog,然后单击了运行。但什么也没有发生。
你能指导我如何解决这个问题吗?
答案1
在 Ubuntu 上编译软件需要一些额外的步骤,因为大多数软件包都是预编译的二进制文件,可以在软件商店或您版本的存储库中找到。遵循以下步骤作为指导将确保您可以轻松编译软件:
- 让我们为软件创建一个存放位置。这样可以确保在出现问题时不会影响我们的运行系统。下面链接的指南使用
/usr/local/src
,但我更喜欢/opt
:sudo mkdir /opt/ProgramName
。ProgramName
用编译程序的实际名称替换。 - 将您要编译的所有项目移入
/opt/ProgramName
,或者更好的是将 Tarball 移动并提取到/opt/ProgramName
:mv -v tarballname.tar.gz /opt/ProgramName && cd /opt/ProgramName/ && tar -xzvf tarballname.tar.gz
- 提取 tarball 的新副本后,我们需要一些工具,即编译器、make 和安装程序:
sudo apt-get install build-essential checkinstall
./configure --prefix=/opt/ProgramName
在根目录中运行ProgramName
。该--prefix
参数非常重要,因为它告诉 make 不要将其安装在系统的默认目录中。这还告诉您该软件包不受 管理apt
。- 现在,如果 configure 脚本崩溃,我们需要安装缺失的依赖项。我们使用 中提供的工具来执行此操作
apt
。每个 configure 脚本都会生成一个以 结尾的文件,.pc
或者.log
当它出错时:apt-file search nameoflogfile.pc
将收集缺失的依赖项。 - 使用步骤 5 的输出安装缺少的依赖
apt-get install missing-package-names
项missing-package-names
。 - 重复步骤4。
- 现在发行
make && make install
您缺少步骤 4。
还请注意,从您的问题可以看出,Prog.pro 是一个 QT 项目文件,它需要qmake
。Qmake 需要 QT 库,默认情况下未安装 QT 库。添加它们将导致额外的菜单项等,因为 Unity 由 GTK 库支持。QT 最显著的用途是K 桌面环境,又名 KDE,这意味着编写此应用程序的人希望它在 KDE 中使用,并且不是 GNOME 或 Unity。
更新
您可能需要运行autogen
脚本。如果您没有看到该脚本,则需要重新下载/重新获取该程序。程序是使用Autotools 工具链 - 教程。 也可以看看:维基百科条目。
也可以看看:编译EasyHowTo