2017-11-05 4 views
0

私はFedora x86_64で作業しています。それは/lib64/usr/lib64とお友達を使用しています。config.siteを使用して* .pcをビルドするときに@ libdir @が間違っていますか?

$ cat libcryptopp.pc.in 
[email protected]@ 
[email protected][email protected] 
[email protected]@ 
[email protected]@ 
... 

マイconfig.siteは以下があります:私は、次の*.pc.inファイルを持っています。これはFedoraのconfig.siteから/usr/share/config.siteにコピーされました。コピーはconfig.site for vendor libs on Fedora x86_64のために使用されました。

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

# 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}/lib64' 
      break 
     fi 
    done 
fi 

、Autoconfのが私の*.pc.inファイルを処理した後:

$ autoreconf --install --force 
... 
$ ./configure 
... 

$ cat libcryptopp.pc 
prefix=/usr/local 
exec_prefix=${prefix} 
libdir=${exec_prefix}/lib 
includedir=${prefix}/include 
... 

お知らせlibdir=${exec_prefix}/lib、およびないlibdir=${exec_prefix}/lib64を。

GCCは、パッケージ用の64ビットバイナリを構築しています。

$ gcc -dumpmachine 
x86_64-redhat-linux 

はなぜ間違ったlib/ディレクトリが使用されている、と私はそれをどのように修正すればよい:私は-mx32または-m32を追加しませんでしたか?

答えて

0

/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が正しくprefix=/usr/localを処理していません。それはIssue 1510073 : Autoconf does not honor libdir in config.site for "[email protected]@" in *.pc fileの未解決の質問です。これはではなく、として閉じられています。

関連する問題