Configuration 使用config.site构建*.pc时@libdir@不正确?

Configuration 使用config.site构建*.pc时@libdir@不正确?,configuration,libraries,autoconf,Configuration,Libraries,Autoconf,我正在研究Fedora x86_64。它使用/lib64、/usr/lib64和朋友。我有以下*.pc.in文件: $ cat libcryptopp.pc.in prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ ... $ autoreconf --install --force ... $ ./configure ... $ cat libcryptopp.pc prefix

我正在研究Fedora x86_64。它使用
/lib64
/usr/lib64
和朋友。我有以下
*.pc.in
文件:

$ cat libcryptopp.pc.in
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
...
$ autoreconf --install --force
...
$ ./configure
...

$ cat libcryptopp.pc
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
...
我的
config.site
包含以下内容。它是从Fedora位于
/usr/share/config.site的
config.site
复制的。使用该副本的原因是

但是,在Autoconf处理我的
*.pc.in
文件后:

$ cat libcryptopp.pc.in
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
...
$ autoreconf --install --force
...
$ ./configure
...

$ cat libcryptopp.pc
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
...
注意
libdir=${exec\u prefix}/lib
,而不是
libdir=${exec\u prefix}/lib64

GCC肯定在为包构建64位二进制文件。我没有添加
-mx32
-m32

$ gcc -dumpmachine
x86_64-redhat-linux

为什么使用了错误的
lib/
目录,以及如何修复它?

错误的
/usr/local/share/config.site
。虽然它是从Fedora的
config.site
复制的,并放在
/usr/local/share
中,但前缀目录是错误的。前缀测试应该使用
/usr/local
,而不是
/usr

下面是更正的一个

$ cat /usr/local/share/config.site
...

if test -n "$host"; then
    # skip when cross-compiling
    return 0
fi

if test "$prefix" = /usr/local \
   || { test "$prefix" = NONE && test "$ac_default_prefix" = /usr/local ; }
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
现在,下一个问题是,为什么Fedora的
/usr/share/config.site
没有正确处理
前缀=/usr/local
。这是一个尚未解决的问题,它已作为非BUG关闭