2

私は Linux の新規ユーザーsystemc-2.3.0で、自分のマシン (Fedora 16) にライブラリをインストールしようとしています。ライブラリの INSTALL ファイルに記載されているすべての指示に注意深く従いましたが、ECLIPSE を使用して簡単なプログラムを実行しようとするとエラーが発生します。ECLIPSE ですべてのライブラリを正しくリンクしましたが、それでもエラーが発生します。

プログラムは次のとおりです。

#include <systemc.h>

using namespace std;

int sc_main(int argc, char * argv[])
{
    cout << "hello world" << endl;

    for(int i=0; i<argc; i++)
        cout << argv[i] << " ";

    cout << endl;
    return 0;
}

エラー出力は次のとおりです。

/home/vivek/workspace/TestSystemC/Debug/TestSystemC: 共有ライブラリの読み込み中にエラーが発生しました: libsystemc-2.3.0.so: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません

どんな助けでも大歓迎です。私は Linux の専門家ではないので、あなたの提案を詳しく (段階的に) 説明してください。

ありがとうございました。

4

5 に答える 5

6

共有ライブラリはシステムのデフォルトライブラリディレクトリの外にインストールされるため、これはダイナミックリンクの環境設定の問題です。バイナリを実行すると、ローダーはlibsystemc-2.3.0.soを見つけることができませんでした。

2つの解決策。

  1. LD_LIBRARY_PATHを設定します。

    export LD_LIBRARY_PATH=/usr/local/systemc-2.3.0/lib-linux64:$LD_LIBRARY_PATH

    または、デフォルトのLD_LIBRARY_PATHが空の場合

    export LD_LIBRARY_PATH=/usr/local/systemc-2.3.0/lib-linux64

  2. バイナリをリンクするときに実行可能ファイルにrpathを追加します。バイナリにエントリを追加し、ローダーに追加のパスを検索するようにヒントを与えます。

    g++ -o TestSystemC ...your c++ files... -L/usr/local/systemc-2.3.0/lib-linux64 -lsystemc-2.3.0 -Wl,-rpath,/usr/local/systemc-2.3.0/lib-linux64

于 2012-10-31T09:27:27.063 に答える
1

~/.profile次のように、末尾に 2 行を追加します。

export SYSTEMC_HOME=/usr/local/systemc-2.3.0/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/systemc-2.3.0/lib-linux64

これが機能しない場合は、インストールした の最上位ディレクトリに2 つのソフトリンク (つまりlib->lib-linux64/と) を追加してみてください (たとえば、私のパスは です)。対応するコマンドは次のとおりです。lib-linux -> lib-linuxsystemc-2.3.0/usr/local/systemc-2.3.0/

(現在のディレクトリを $SYSTEMC_HOME ディレクトリに変更します):

$ln -s /usr/local/systemc-2.3.0 lib
$ln -s /usr/local/systemc-2.3.0  lib-linux

おそらく、lib-linux64 は 64 ビットのオペレーティング システムをサポートし、lib または lib->linux は 32 ビットのオペレーティング システムをサポートします。

于 2015-10-21T02:17:00.613 に答える