我在Fedora 26,x86_64上构建一些基于Autotool的库时遇到问题。 64位Fedora将第三方和供应商库放在/usr/local/lib64
中。 Ubuntu 17使用/usr/local/lib
,所以相同的项目构建好。Fedora x86_64上供应商库的config.site
我一直在使用--libdir=/usr/local/lib64
但三个库抵制它。 /usr/local
我缺少config.site
,所以我想添加一个。在讨论usr/local
的config.site
时,网站默认值的Autoconf manual有点让我感到困惑。它说:
[中
/usr
版confg.site
讨论] ...同样,在其中64位库默认情况下,建平台, 然后安装在/ usr /本地/ lib64的,而不是的/ usr /本地/ lib下,它是 适当安装/usr/local/share/config.site:
# /usr/local/share/config.site for platforms that prefer # the directory /usr/local/lib64 over /usr/local/lib. test "$libdir" = '${exec_prefix}/lib' && libdir='${exec_prefix}/lib64'
我遇到的问题是,是变形例以上附加到/usr/local
版本config.site
?或者它取代现有的代码块?或者我可以在没有修改的情况下将其复制到其所属的位
或者,也许猫/usr/local/share/config.site
看起来像什么?
这是/usr
的config.site
。我不清楚它是否需要修改或如何修改它。
$ cat /usr/share/config.site
# This is the config.site file to satisfy FHS defaults when installing below
# /usr.
#
# You may override this file by your config.site using the CONFIG_SITE env
# variable.
#
# Note: This file includes also RHEL/Fedora fix for installing libraries into
# "/lib/lib64" on 64bit systems.
if test -n "$host"; then
# skip when cross-compiling
return 0
fi
if test "$prefix" = /usr \
|| { test "$prefix" = NONE && test "$ac_default_prefix" = /usr ; }
then
test "$sysconfdir" = '${prefix}/etc' && sysconfdir=/etc
test "$sharedstatedir" = '${prefix}/com' && sharedstatedir=/var
test "$localstatedir" = '${prefix}/var' && localstatedir=/var
ARCH=`uname -m`
for i in x86_64 ppc64 s390x aarch64; do
if test $ARCH = $i; then
test "$libdir" = '${exec_prefix}/lib' && libdir='${exec_prefix}/lib64'
break
fi
done
fi
我开始就这个问题写一个答案,但我认为这会浪费时间。如果明确地指定'--libdir'选项不会导致您的库到达您想要的位置,那么添加或修改站点默认设置似乎也不太可能实现。默认点主要是为了避免你必须手动指定安装位置,但你已经过去了。 –
我建议查看Makefile.am(假设Automake正在发挥作用),它指导相关库的构建。修改它以遵守您指定的libdir应该不会太难。但是,不管怎么说,它是否有目的性还没有做到。 –
谢谢@约翰。我收集了更多信息。这是一个程序的Fedora spec文件。请注意''gnutls.spec'](http://pkgs.fedoraproject.org/cgit/rpms/gnutls.git/tree/gnutls.spec)中使用'sed'修补'%{_ libdir}'。我想我的下一个问题是,GnuTLS首先通过设置“sys_lib_dlsearch_path_spec”来做正确的事情?看起来Autotools/Autoconf应该推动整个过程。也就是说,'sys_lib_dlsearch_path_spec'摆弄不应该出现,并且应该始终使用'%{libdir}'。 – jww