如何让 automake 在双架构 Linux 平台上将 libdir 设置为 /usr/lib64

How to get automake to set libdir to /usr/lib64 on dual-arch Linux platforms

我正在维护一个自动工具配置的项目,我注意到在一个普通的自动工具设置中:

libtoolize --verbose --copy --force
aclocal --verbose -I m4 -Wall
autoheader -Wall --verbose
autoconf -Wall --verbose
automake --add-missing --force-missing --copy --warnings=override -Wall
./configure --prefix=/usr
make 
make install
Installing libexample.so in /usr/lib

我的构建(在 x86_64 arch,linux 上)生成的 make install 在 $prefix/lib.

中生成的库

我希望图书馆将 $LIBDIR 设置为 $prefix/lib64

我能够在 CentOS 6.9 上重现这个。不幸的是,official Upstream Vendor response to having a reasonable config.site installed 已关闭 WONTFIX。我也能够在 CentOS 7.4 上重现这个。

config.site 是大多数发行版的常用方式。他们确实提供了解决方法的建议:基本上向后移植 Fedora 的 config.site 所做的一切。

FWIW,我目前使用的发行版是通过在 /etc/profile.d/site.sh 中导出 CONFIG_SITE 来实现的:

CONFIG_SITE="/usr/share/site/x86_64-unknown-linux-gnu"
export CONFIG_SITE

/usr/share/site/x86_64-unknown-linux-gnu 的相关部分做类似的事情:

 if test "$libdir" = '${exec_prefix}/lib' ; then 
       ac_config_site_64bit_host=NONE

       case "$host" in
       "" )
       ... sort through 32-bit cross-compilation ...

       *x86_64* | ... other 64-bit architectures ...)
               ac_config_site_64bit_host=YES
               ;;
       esac

       if test "x$ac_config_site_64bit_host" = xYES; then
               libdir='${exec_prefix}/lib64'
       fi
  fi

类似的东西可能对你有用。

或者,您可以像 RPM 包那样指定 --libdir