2017-08-23 7 views
0

類似の質問は存在しますが、同じ問題はありません。 私はCentOS 7.3.1611と2つのマシンを持っていて、CentOSに似ているものはカスタムRedHatと言うことができます。
カスタムマシンで実行する必要のあるSDKがありますが、yum gccがありません。
私はCentOS上でSDKをコンパイルしてインストールしなければなりませんでした。その後、結果をカスタムマシン(共有ライブラリ、スクリプト、バイナリ...)にコピーしてそこで実行しました。共有ライブラリの未定義シンボル

のdlopen(libsdkpolicerlib.so):次のように特定のライブラリをロードするとき
は当然SDKは、CentOSの上でうまく働いたが、カスタムマシン上で正常にドライバや他のライブラリの一部をロードする間、私はエラーを得ました失敗しました:(/usr/local/bin/../lib/libsdkpolicer.so.1:未定義のシンボル:policer_validate_packet_type)

お知らせここに関与3つの共有オブジェクトがあります

  • libsdkpolicerlib.so試行をdlopenの一つが開き
  • シンボルpolicer_validate_packet_type

共有オブジェクトのすべてを含む libpolicercomlib.so

  • は同じであるlibsdkpolicer.so.1ディレクトリ/usr/local/lib
    libpolicercomlib.soには実際にシンボルが含まれています。

    私が持っている:

    • はld.so.cacheは、上記のすべてのライブラリが含まれて確認しました。
    • また、私は/ usr/local/libをLD_LIBRARY_PATH変数に追加しました。
    • パスと「-n」で実行にldconfig ...

    私は、これがもののこの種を行うための最善の方法ではありません知っているが、この解決策は一時的なものです。

    私の質問は、これが機能するために他に何を確認する必要がありますか?
    ここには何が欠けていますか?

  • 答えて

    0

    lddコマンドを使って/lib/libsdkpolicer.so.1を確認することができます。あなたがコピーするlibpolicercomlib.soファイルは単にリンクファイルであり、yum GCCなしでマシン上でチェックすることもできます。すべてが正しければ、/ lib64 /ld-linux-x86-64.so.2ローダーをコンプリマシンから新しいマシンにコピーして(前にバックアップして)試してみてください。

    +0

    ありがとうございました。シンボリックリンクにいくつか問題がありました。私はtarを使ってシンボリックリンクとcpを-Pで保持することを確認しました。 –

    +0

    'ld-linux'をあるマシンから別のマシンにコピーすることは、* worst *可能なアドバイスです。オリジナルとソースのどちらかが同一である場合、操作はノーオペレーションです。そうでない場合、コピーされたマシンはゴミ箱になります。文字通りコマンドは機能しません。レスキューディスク。 –

    関連する問題