5

私が取り組んでいるプロジェクトでは、依存ライブラリを内部的にダウンロードしてコンパイルする非標準の配布システムを使用しています。この crock は、ライブラリごとconfigureに、コンパイル システムの内部ディレクトリを接頭辞として指定するスクリプトを起動します。次に と を実行makemake install、そのファイルでインストール ディレクトリを検索してコンテンツを検証しlib/<mylib>.aます。この最後のステップは失敗します。

何が起こっているのかを理解しようとして、私が作成したものを含め、ランダムなライブラリのペアを自分でコンパイルしました。私のディストリビューション (openSUSE、64 ビット) では、インストール パスに が入力されていません/libが、/lib64代わりに が入力されていることに気付きました。

これがディストリビューションの設定であることは明らかであり、この設定がディストリビューションに同梱されているautotoolsの構成に関係していると確信しています。

この動作を変更する方法、または代わりにシステムからこの情報を読み取る方法はありますか (上記の Crock にパッチを適用できるようにするため)。

ご協力いただきありがとうございます

更新:--libdirでフラグについて学習したconfigureので、問題を解決できると思います。それでも、どういうわけかディストリビューションにクエリを実行してこの詳細を知る方法があるかどうかを知りたいです(たとえば、構成ファイルを読むなど)。

4

2 に答える 2

5

ユーザーが $libdir の別の場所を明示的に要求しない限り、configure スクリプトは、マシンについて想定したり、${exec_prefix}/lib 以外の場所にライブラリをインストールしようとしたりしてはなりません。ユーザーが別の場所を明示的に要求できるメカニズムの 1 つは、config.site ファイルを使用することです。ファイル ${prefix}/share/config.site が存在する場合、$libdir に別の値が指定されている可能性があり、ユーザーは無意識のうちに別のインストール場所を明示的に指定してしまう可能性があります。

于 2012-02-14T15:57:47.957 に答える
3

それはウィリアム・パーセルによる良い答えです。この質問は特に openSUSE に関するものなので、openSUSE はconfig.site. 同等のファイルがrpm/usr/share/site経由で実際にインストールされ、このファイルを指すように環境変数をエクスポートすることによってアクティブ化されます。既に見たように、その変数はautoconf によって受け入れられます。site-config/etc/profile/site.{c,}shCONFIG_SITE

于 2012-12-18T20:54:11.547 に答える