我如何编译 imgcnv?

我如何编译 imgcnv?

我想编译图像这样我就可以把图片切下来帕诺伊斯. imgcnv的安装说明非常简洁:

$ pwd
/home/$USER/src/imgcnv
$ ls
build-imgcnv-cygwin.sh  INSTALL      matlab     msvc2010_bimread   src_bimread
build-imgcnv-linux.sh   libs         msvc2008       msvc2010_gobjects  src_gobjects
build-imgcnv-macosx.sh  libsrc       msvc2008_bimread   readme.txt     testing
changelog.txt       LICENCE.txt  msvc2008_gobjects  scripts
generated       Makefile     msvc2010       src
$ cat INSTALL 
Welcome to imgcnv.  A utlity for reading and converting 
biological image formats.
1.  To install just execute,
    $ make install
2.  Sit back

我下载了一个全新的 1.52 目录。

我已经获得了最新的 qt4-make,但是无法成功制作:

$ make
/usr/bin/ld: cannot find -lbz2
collect2: ld returned 1 exit status
make[1]: *** [../imgcnv] Error 1
make[1]: Leaving directory `/home/$USER/src/imgcnv/src'
#(cd src; qmake imgcnv.pro)
#(cd src; make)

我在一台英特尔机器(hp 6220 笔记本电脑)上使用 32 位 Oneiric

答案1

简短回答(适用于您的具体情况)

  1. 安装qt4-qmake软件包(如果软件包不可用,则qt3-dev-tools安装软件包)。同时安装软件包。(您可以通过运行后跟 来libbz2-dev从命令行安装两者。)sudo apt-get updatesudo apt-get install qt4-qmake libbz2-dev
  2. 如果您不想imgcnv安装在/usr/bin(默认位置),请编辑Makefile并更改第一行(内容为prefix=/usr)。例如,如果您希望将其安装在/usr/local/bin,这是您从源代码构建和安装软件的正常位置(而不是通过 Ubuntu 的包管理器),请将此行改为prefix=/usr/local。如果您想安装imgcnv在主目录中,则$HOME/bin如果它尚不存在,请创建它,并编辑Makefile第一行以读取$HOME
  3. 跑步make
  4. 运行sudo make install(除非您安装在主目录中;然后运行make install)。
  5. 假设它有效,那么很明显官方安装说明是有错误的,因此您可以选择将其作为错误报告给 imgcnv 的维护人员。

这对我有帮助图片尺寸 1.52在 Ubuntu 11.10 Oneiric Ocelot amd64(即 64 位)系统上。如果它不适合您,请评论详细信息(包括错误消息以及您的 Ubuntu 系统的版本和体系结构)。

如果此方法无效,您可以尝试删除imgcnv文件夹并重新开始,重新提取存档。也许像您所做的那样,手动运行脚本会弄乱某些东西,导致无法正常make工作。

较长的答案(也适用于类似情况)

从源代码构建软件的标准方法是遵循这些说明,因为这些说明具有良好的可行说明。不幸的是,这并非如此。

在没有说明(或没有工作说明)的情况下从源代码构建软件的标准方法是查看是否有一个名为 的脚本configure。如果有,请运行./configure --help以查看它采用哪种命令行选项。然后运行该脚本,使用适合您需要的任何选项。通常您可能./configure不使用任何选项运行,因为默认值通常是可以接受的。运行 后./configure,您可能会收到说明。如果您被告知运行make,或者没有收到说明,则应该运行make

如果没有configure脚本(如本例所示),请查看是否有名为 的文件Makefile。如果有,则运行make。(如果有configure脚本,此脚本通常会生成Makefile,或者在极少数情况下可能会修改它。)您可能首先想要编辑Makefile以自定义构建或安装的选项。脚本的一个目的是通过创建根据您的规范定制的 来configure使此操作变得不必要。makefile 中最常见的自定义变量之一是,它控制软件的安装位置。(有关此问题的具体示例,请参阅上面的“简答”。)Makefileprefix

运行./configuremake有时会失败,提示您没有所需的东西。发生这种情况时,您必须安装该东西。当我运行 时make,一切似乎都进展顺利,直到它最终失败,因为qmake我的系统中没有该命令。由于qmake是一个命令,我尝试手动运行它,它给了我一条详细的消息,告诉我我没有它(我已经知道了)以及我可以安装哪些包来获取它。然后我安装了其中一个包(qt4-qmake)并make再次运行。(如果它是库或头文件,我可能需要在http://packages.ubuntu.com看看是什么提供了它。)

再次运行make通常可以从上次中断的地方继续(或者即使不能,也可以从开始之后的某个地方继续)。某些软件(包括 imgcnv)可能需要相当长的时间才能构建,因此尝试从上次中断的地方继续是个好主意。不过,这偶尔会导致问题,因此如果您make再次运行并且失败,您可以运行make distclean以将事情恢复到运行之前的状态make,然后运行make。(如果make distclean不行,请运行make clean。)

有时源代码发行版有构建脚本,例如build-imgcnv-linux.shimgcnv。如果同时有构建脚本和Makefile,并且文档没有告诉您手动运行构建脚本,建议您make先尝试运行 ,尤其是当说明告诉您运行 时make install。在正确设置的具有 的源代码发行版中Makefile,运行会执行与运行后跟make install相同的操作(即,它会看到软件尚未构建,并且会在尝试安装之前对其进行构建)。但有时这不起作用,所以您必须先运行。makemake installmake

无论如何,建议make先运行make install,即使您知道运行make install本身会自动完成该make步骤。这样做有三个原因:

  1. 如果在此make步骤中发生任何让您感到惊慌的事情(即使不是错误),您安装的软件可能不是按照您想要的方式构建的。例如,可能会有警告提醒您潜在的问题。

  2. 这不适用于imgcnv。但许多源代码发行版都附带测试套件,以查看构建的程序是否可以正常工作。您可以使用 或 构建并运行它们make checkmake test(如果文档没有提到它们,我建议按该顺序尝试这些命令。)这些不会通过运行 自动运行make install,虽然您可能能够只运行make checkmake test而不先运行make,但这是不可取的,因为可能不清楚是在构建软件时还是在构建/运行测试套件时发生了错误(这是解决问题的关键信息)。

  3. 如果你要为整个系统(而不仅仅是你的用户)安装软件,这几乎总是默认配置,那么make install需要运行root。在 Ubuntu 上,正确的方法是运行sudo make install而不是make install。但您不需要真正以 构建软件root,因此您可以使用 自行构建软件make,然后以root的方式安装它sudo make install

如果您确定要同时构建和安装(无论构建时出现什么样的可怕警告)并且make install不起作用,则可以使用成语make && make install。 这也解决了root/non-root问题,因为您可以运行make && sudo make install&&以这种方式使用的操作符仅当其左侧的命令似乎已成功时,才会运行其右侧的命令。

(我有意省略了如何构建需要用户调用autoconfautomake和/或autogen.sh脚本的软件的讨论,因为稳定版本的源代码很少需要这样做。但是,如果有人想编辑这篇文章并在第三个主题标题下添加涵盖这些情况的说明,我不会反对。)

相关内容