下一页 上一页 目录

3. 使用 Make

Makefile 是构建过程的关键。最简单来说,Makefile 是一个用于编译或构建 “二进制文件”(软件包的可执行部分)的脚本。Makefile 也可以提供一种更新软件包的方法,而无需重新编译其中的每个源文件,但这又是另一个故事(或另一篇文章)了。

在某个时候,Makefile 会启动 ccgcc。 这实际上是一个预处理器、一个 C (或 C++) 编译器和一个链接器,并按顺序调用。 此过程将源代码转换为二进制文件,即实际的可执行文件。

调用 make 通常只需要输入 make。 这通常会为所讨论的软件包构建所有必要的执行文件。 但是,make 也可以执行其他任务,例如将文件安装到其正确的目录中(make install)和删除过时的目标文件(make clean)。 运行 make -n 允许预览构建过程,因为它会打印出 make 将触发的所有命令,而实际上不执行它们。

只有最简单的软件使用通用的 Makefile。 更复杂的安装需要根据库、包含文件和资源在你特定机器上的位置来定制 Makefile。 当构建需要 X11 库进行安装时,尤其如此。 Imakexmkmf 完成此任务。

Imakefile,用手册页的话来说,是一个 “模板” Makefile。 imake 实用程序从 Imakefile 构建适合你系统的 Makefile。 但是,在几乎所有情况下,你都会运行 xmkmf,这是一个调用 imake 的 shell 脚本,是 imake 的前端。 查看软件存档中包含的 README 或 INSTALL 文件以获取具体说明。(如果在解压源文件后,基本目录中存在 Imake 文件,则明确表明应运行 xmkmf。) 阅读 Imakexmkmf 手册页以获得更详细的程序分析。

请注意,可能需要以 root 用户身份调用 xmkmfmake,尤其是在执行 make install 将二进制文件移动到 /usr/bin/usr/local/bin 目录时。 以没有 root 权限的普通用户身份使用 make 可能会导致 write access denied 错误消息,因为你缺乏对系统目录的写入权限。 还要检查创建的二进制文件是否对你和任何其他适当的用户具有正确的执行权限。

调用 xmkmf 使用 Imake 文件来构建适合你系统的新 Makefile。 你通常会使用 -a 参数调用 xmkmf,以自动执行 make Makefiles, make includes,make depend。 这会设置变量并定义编译器和链接器的库位置。 有时,可能没有 Imake 文件,而是有一个 INSTALLconfigure 脚本来完成此目的。 请注意,如果运行 configure,则应将其作为 ./configure 调用,以确保调用当前目录中正确的 configure 脚本。 在大多数情况下,发行版中包含的 README 文件将解释安装过程。

通常最好目视检查 xmkmf 或其中一个安装脚本构建的 Makefile。 Makefile 通常对你的系统是正确的,但你可能偶尔需要 “调整” 它或手动纠正错误。

将新构建的二进制文件安装到适当的系统目录通常只需以 root 用户身份运行 make install。 现代 Linux 发行版上系统范围二进制文件的常用目录是 /usr/bin/usr/X11R6/bin/usr/local/bin。 新软件包的首选目录是 /usr/local/bin,因为这将使二进制文件与原始 Linux 安装分开。

最初针对商业版本 UNIX 的软件包可能会尝试安装在 /opt 或其他不熟悉的目录中。 当然,如果预期的安装目录不存在,这将导致安装错误。 处理此问题的最简单方法是以 root 用户身份创建 /opt 目录,让软件包安装在那里,然后将该目录添加到 PATH 环境变量。 或者,你可以创建指向 /usr/local/bin 目录的符号链接。

因此,你的一般安装程序将是

注意


下一页 上一页 目录