2

このconfigureコマンドを使用してソースからphpcompilerをコンパイルしようとしています。

./configure  --prefix=/opt/phc-0.3.0.1/    --with-php=/opt/php-5.3.17/

構成エラーは、

checking for exit in -lboost_regex-mt... no
checking for exit in -lboost_regex-mt... (cached) no
checking for exit in -lboost_regex... no
checking for exit in -lboost_regex... (cached) no
checking for exit in -lboost_regex... (cached) no
configure: error: Could not link against boost_regex 

boostパッケージとboost_regexパッケージの両方がインストールされているので、これは完全に間違っています。libsとヘッダーファイルの両方。config.logそれから私はこれをファイルに掘りました

configure:17053: g++ -o conftest -g -O2    -L/lib/php5 -L/usr/lib/php5 conftest.cpp /usr/lib/libCrun.so.1 -lphp5 -L/opt/php-5.3.17//lib -R/opt/php-5.3.17//lib -ldl  >&5
g++-4.6.real: error: /usr/lib/libCrun.so.1: No such file or directory
g++-4.6.real: error: unrecognized option '-R'

したがって、このunrecognized option '-R'エラーでは、多くの-lboost_regexチェックが失敗しました。

どうすればこれを修正できますか?編集して修正できるファイルはありますか?そして、なぜ-R使用されるのですか?-L旗だと思います。

4

2 に答える 2

2

あなたのコメントはこの-Rオプションがから来ていることを示しているのでconfigure、次の行がm4/php-embed.m4最も可能性の高いソースであるように見えます:

LIBS="-lphp5 -L${PHP_INSTALL_PATH}/lib -R${PHP_INSTALL_PATH}/lib $LIBS"

を見るとconfigure、他のすべてのオカレンスはそれ-Rを、と記述します。${wl}-Rここで、はに${wl}展開される可能性があり-Wl,ます。したがって、これを修正する1つの方法は、上記の行${wl}にbeforeを追加し、を実行して再作成することです。-Rautogen.shconfigure

既存のものをチェックした後、これについてバグを報告したいと思うかもしれません。

于 2012-09-28T07:47:44.163 に答える
0

削除されたGit2.23(2019年第2四半期)でも同様のエラー(および解決策)を確認できます-R
実行時にダイナミックライブラリを見つけるためのパスを指定する方法が簡素化されました。
古いデフォルトのパス-R/path/to/dirは、新しいデフォルトのパスに置き換えられました-Wl,-rpath,/path/to/dir。これは、GCCが最近使用したものです。

ÆvarArnfjörðBjarmason ( )によるcommit 0f50c8e(2019年5月17日)を参照してください。( Junio C Hamanoによってマージされました---コミット51d6c0f、2019年6月13日avar
gitster

MakefileNO_R_TO_GCC_LINKER:フラグを削除します

CC_LD_DYNPATHデフォルトの呼び出しを、GCCが最近気に入っているものに変更します。GCC 4.6リリース以降、不明なフラグはld(1)
に渡されていません。したがって、以前のデフォルトのは、設定されていない限り、最新のGCCでエラーが発生します。CC_LD_DYNPATH=-RNO_R_TO_GCC_LINKER

""の使用は455a7f3( "More portability。"、2005-09-30、Git v0.99.8a)に-Rまでさかのぼります。 その後すぐに、bbfc63d( "は必ずしも"、2006-12-27、Git v1.5.0-rc1でランタイムlibpathを渡すとは限りません)にフラグが追加され、オプションで" "を使用できるようになりました。
gcc-RNO_R_TO_GCC-Wl,-rpath=

次に、f5b904d( "Makefile:Allow CC_LD_DYNPATH to override"、2008-08-16、Git v1.6.1-rc1)で、このフラグを他の何かに完全にオーバーライドする機能が追加されました。一部のリンカーは" -Wl,-rpath,"も""も-R使用しないためです。 。

私が言えることから、後知恵の恩恵を受けて、2006年にこの変更を行う必要があります。GCCは、当時、または少なくともbinutils-gdb.git
以降、このタイプの呼び出しをサポートしていました。a1ad915dc4( "[...] [...]のサポートを追加"、1994-07-20)。ld-rpath

さらなる読み物と先行技術は以下で見つけることができます:

2011年3月25日にリリースされたGCC4.6-R導入されたと思われるレポートを読んだことで誤りがわかりましたが、これを確実に確認することはできませんでした。リリースノートがあいまいで、できませんでした。わざわざGCC4.5に対してビルドして二分しようとすることはありません。

于 2019-06-14T22:00:46.657 に答える