如何让Makefile确定系统的lib目录?

时间:2012-02-09 15:48:04

标签: makefile gnu-make

在尝试从源代码安装程序时,我发现它将库安装到/ usr / lib / [program] /,因为这是在64位系统上,所以它不起作用。我不得不将库复制到/ usr / lib64 / [program]。请注意,库文件是python,因此与体系结构无关。

Makefile有: libdir = /usr/lib

如何在64位系统上libdir等于lib64,在32位系统上lib?{/ p>

2 个答案:

答案 0 :(得分:7)

试试这个:

MACHINE := $(shell uname -m)

ifeq ($(MACHINE), x86_64)
libdir = /usr/lib64
endif
ifeq ($(MACHINE), i686)
libdir = /usr/lib
endif

答案 1 :(得分:4)

这是一个很好的解决方案,但是如果你遇到需要设置更多变量的情况,你可以考虑使用构造的变量名。我发现它们更容易阅读,但YMMV。

libdir.x86_64 = /usr/lib64
libdir.i686   = /usr/lib

MACHINE := $(shell uname -m)

libdir = $(libdir.$(MACHINE))