Linux 包含/usr/lib子目录的通用生成文件
我的makefile中的一个规则依赖于-lmysqlclient。在我的Ubuntu 10.04 32位框中,libmysqlclient.so文件位于/usr/lib中。在CentOS 6.2 64位的另一个盒子上,文件位于/usr/lib64/mysql中。有没有比在makefile中添加以下“hack”更通用的方法Linux 包含/usr/lib子目录的通用生成文件,linux,makefile,portability,Linux,Makefile,Portability,我的makefile中的一个规则依赖于-lmysqlclient。在我的Ubuntu 10.04 32位框中,libmysqlclient.so文件位于/usr/lib中。在CentOS 6.2 64位的另一个盒子上,文件位于/usr/lib64/mysql中。有没有比在makefile中添加以下“hack”更通用的方法 ifeq ($(shell uname -m), x86_64) vpath %.so /usr/lib64/mysql endif 也许您可以使用vpath行创建一个文件c
ifeq ($(shell uname -m), x86_64)
vpath %.so /usr/lib64/mysql
endif
也许您可以使用
vpath
行创建一个文件config-x86_64.mk
,并在makefile中执行以下操作
-include config-$(shell uname -m).mk
如果文件不存在,-include
将避免错误
在任何情况下,都应正确配置每个系统,以便链接器自动拾取系统库,而无需任何手动破解。谢谢您的建议。关于正确的系统配置,我不认为我做了任何不寻常的事情:fresh CentOS安装(最小)和库都是通过简单的“yum install mysql-devel”安装的。为什么不
vpath%。所以/usr/lib usr/lib64/mysql
没有条件?@Beta:是的,显然也可以,谢谢!