6

したがって、Mountain LionにはX11が付属しておらず、X11を必要とするユーザーはXquartzをダウンロードするように指示されていることは誰もが知っています。Xquartzはにインストールされますが/opt、シンボリックリンクX11X11R6にインストールされ/usrます。しかし、X11インクルードファイルへのリンクを必要とするソフトウェアを構築するとき、X11ライブラリを見つけるためにライブラリ検索パスに追加/usr/X11/include(または)する環境変数を渡す必要があることに気付きました。私の質問はなぜですか?/opt/X11/include./configure

私はGoogleでいくつかの調査を行い(多くの結果はStack Overflowを指し示しています)、Appleのドキュメントを読みました。これらのソースはすべて、OS Xには/etc/ld.so.conf多くの(すべてではないにしても)ファイルに相当するものがないことを示しています。 Linuxディストリビューション。DYLD_LIBRARY_PATHAppleはそれがデフォルトで空であるとさえ述べています。ただし、Lion(Appleの最後の「公式」X11がインストールされている)では、同じ./configureスクリプトがライブラリ検索パスに何も追加せずにX11ライブラリを検索します。

では、ライブラリ検索パスを明示的に変更しないと、スクリプトがMountain LionでX11ライブラリを見つけられないのはなぜですか?./configure

4

1 に答える 1

1

1年以上前に質問されました...しかし、同様の問題でここに来たとき...

上記のルビーの質問では、ライブラリ検索パスが変更されていないことに注意してください。そのソリューションは、C++ コンパイラのフラグとして多くの Makefile によって取得される環境変数を設定するだけです。その例では、ビルド時の -I ncludepath 、つまり.headersを検索する場所を定義していましたが、ライブラリではありません(これは、コンパイラ/リンカーの -L オプションでした)。どちらもビルド時のオプションでした。LD_LIBRARY_PATH か DYLD_LIBRARY_PATH か - どちらも実行時に動的リンカーによって考慮される環境変数です。(詳細については、http://en.wikipedia.org/wiki/Dynamic_linkerを参照してください)

手元に 10.8 より前のマシンはありませんが、/usr/include/X11 -> /opt/X11/include/X11 というシンボリック リンクがあったのではないかと推測します。同じソースを仮定して...

これは、そのような問題の別の潜在的な解決策です (私の realvnc ビルドを修正しました):

$ autoconf
$ ./configure

では、「なぜ?」に対するあなたの質問です。ソースには、X11 インクルードを検索する潜在的な場所として /opt/X11/include が含まれていない、または単に一部を取得しなかった古い autotools に基づいた「ビルド済み」構成スクリプトが含まれていたためです。上記のコンパイル時のフラグは、現在のシステムで正しく表示されます。自作でautoconfをインストールしました-ああ、素晴らしいものです、乾杯。

于 2013-10-18T22:48:33.080 に答える