Next Previous Contents

3. 使用 Make

Makefile 是建立过程的重点. 在它的最简单的形式, Makefile 就是个 script ,它是用来编译或建立"二元码",套件的可执行部分. Makefile也可以提供软体套件升级的工具,而不需要重新编译每一个在套件中的原始档案, 但其有不同的情况(或是不同的约定).

某些特点是, Makefile 开启 ccgcc. 这实际上是个前处理器, C (or C++) 编译器, 和 连结器, 按照那个顺序. 这过程转换原始码(source)为可真正去执行的二元码(binaries).

下指令 make 通常只要键入 make. 这通常建立讨论中的套件所有需要的可执行档. 然而, make 也做其他工作,像是安装档案至合适的目录 (make install) 而且删除旧的 object 档案 (make clean). 执行 make -n 允许预览建立过程, 就是列出所有 make 所唤起的(triggered)所有命令, 但没有真的去执行它们.

只有在最简单的软体使用一般性的 Makefile. 较复杂的安装需要根据函式库(libraries), include 档案以及你个别机器资源所在目录来量身定制. 这特别是当需要 X11 libraries 来安装建立时. Imakexmkmf 可完成这样的工作.

引用自 man page,Imakefile 是个"模板(template)"的 Makefile. imake 工具参考 Imakefile 根据你的系统造出合适的 Makefile. 然而,几乎在所有的情况下,你要执行 xmkmf, 它是要下 imake 指令用的 shell script, 也就是个前端介面(front end). 察阅一下内附在软体档案间的 README 或 INSTALL 档案以取得特别的指示. 至於更详细的步骤分析,请阅读 imake 和 xmkmf 的 man pages.

要知道的是 xmkmfmake 可能需要以 root 身分来下指令, 特别是当 make install 来搬移二元码到 /usr/bin/usr/local/bin 目录. 以一般使用者的身分而不具 root 权力 来使用 make 将可能会导致 write access denied 的错误讯息, 因为你缺少写入(write)至系统目录的权限. 也检查一下, 所造出来的二元码对你与任何其他适用的使用者有适合的执行(execute)权限.

下指令 xmkmf 来使用 Imake 档案, 建立一个新的而且适合你系统的 Makefile. 正常地下指令 xmkmf 都会附加 -a 引数, 因而自动地做 make Makefiles, make includes,make depend 的动作. 这会设定变数(variables)和给定函式库(library) 位置给编译器和连结器. 有时会没有 Imake 档案, 引而代之的是有 INSTALLconfigure 的 script, 也会到这样的目的. 注意的是如果你要执行 configure, 那要下指令 ./configure 以确保在目前目录下正确的 script configure 是被呼叫. 在大部分的情况, 在发行套件中的 README 档案会说明安装步骤.

通常一个好的方法是从外观检视一下 Makefilexmkmf 或 其中一个安装的 scripts 所造出来的. Makefile 正常下会为你的系统而修正, 但你偶而可能需要"旋扭(tweak)"或手动地修正错误.

你的一般安装步骤将会是:


Next Previous Contents