2016-05-27 3 views
-1

ELFファイル(Cygwinから1つ - 質問しない - とUbuntuから1つ)からarm-linux-gnueabihf-lddを実行し、-rpath-linkを含むUbuntuの警告を取り除いたにもかかわらず私はそれを読んだところで不明なマンページのあいまいさを考えると、dllは未解決の5つのうちの1つとしてld-linux.so.3を表示していますが、リンカは他の4つについては決して恥じませんでした!この場合、パスはapt-getによってインストールされたローカルコピーになりました。arm-linux-gnueabihf-ldのmanページはどこにありますか?-rpathと-rpath-linkが含まれています。

このような時間の無駄は、ホストが「見つからない」(ELFファイルが見つかったが、名前のないライブラリが見つからなかったことを意味する)という不満を引き起こしました。ホストマシンがこれらのほとんどを/ libに、残りを/ usr/libに持っているということは、-rpathや-rpath-linkがホストマシンのどこを見ているのか、ホストマシンがライブラリをどこに保持しているかを知るのに十分スマートでないかのように。

私は単純なarm-linux-gnueabihf-ldオプション(または、拡張として、arm-linux-gnueabihf-g ++オプション)よりも「上位」(つまり、不透明)十分にその使用中などのメッセージが発生することはありません。私はのろわよく知っている、それは別の文脈で「-rpath」を認識し、それが役に立たないのパスを、見つけることができないことを訴えていたときに

arm-linux-gnueabihf-g++: error: unrecognized command line option ‘-rpath’ 
arm-linux-gnueabihf-g++: error: unrecognized command line option ‘-rpath’ 

ホストマシン、ビルドマシン上で!

+0

'ld'または' ldd'を意味しましたか? –

+0

lddは、ダイナミックライブラリを必要とする未解決の外観を見つけるユーティリティです。 –

+0

私はそれを認識していますが、あなたはタイトルの1つを書き、質問の本文に別のものを使用します。 –

答えて

0

man ldを試しましたか?

完全なドキュメントはbinutils manualにあり、info ldを使用して読むことができます。

-rpath-link, which I assumed was making a dynamic dependency static

いいえ、それはどこ間接的な共有ライブラリの依存関係を見つけるためにリンカに指示しますので、未解決の参照がないことを確認するためにそれらを確認することができます。

. The fact that the host machine has most of these in /lib and the rest in /usr/lib made me think that -rpath and/or -rpath-link were supposed to tell it where to look on the host machine for their resolution

-rpath実行時に動的ローダがランタイムにその経路内の共有ライブラリの依存関係を探しするように、実行可能ファイルへのパスを追加します。これは、共有ライブラリへのパスを指定する方法の1つです。長さはldconfig,LD_LIBRARY_PATHなどです(詳細はld.so(8)を参照してください)。

-rpath-linkは、リンク時にの共有ライブラリ依存関係を探す場所を教えてくれますが、実行時に依存関係がどのように見られるかには影響しません。

リンカのオプションであり、g++がそれを理解していないため、g++には-rpathを渡すことはできません。 -Wl,-rpathを使用して、g++にリンカーに渡すように指示します。

+0

-Wl、 "-rpath/lib" -Wl、 "-rpath/usr/lib"であっても、-Wl、 "-R/lib" -Wl、-R/usr/lib "(これは-Wlなしでも受け入れます)、そうではありません。ダイナミックライブラリへのパスを欠いている、まったく役に立たないELFを構築します。 –

+0

苦情は次の通りです: /usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/bin/ld:悪い - rpathオプション collect2:エラー:ldが1を返しました。終了ステータス –

+0

静的リンクを解決する際に先読みロジックがない場合と同様に、問題が位置的に依存する可能性はありますか? –

関連する問題