1

ここにあるクラスター上で、ブーストを使用してc++でプログラムを正常にコンパイルしました。シミュレーションを実行するには、SGEスクリプトを実行する必要があります。私が得るエラーはこれです

./main:共有ライブラリのロード中にエラーが発生しました:libboost_thread.so.1.45.0:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません

プログラムを起動するときにライブラリの名前を指定する必要がありますか?私が使用したスクリプトは以下のとおりです

#!/bin/sh
# (c) 2008 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.
# This is a simple example of a SGE batch script

# request Bourne shell as shell for job
#$ -S /bin/sh

#$ -N cr_number       # this name shows in qstat
#$ -S /bin/bash      # run with this shell
#$ -l h_rt=50:00:00  # need 50 hour runtime
#$ -pe mpich 4       # define parallel env
#$ -cwd     # run the job in the directory specified.
#$ -o cr_number.out
#$ -e cr_number.err
# (-j will merge stdout and stderr)

#$ -notify
#$ -M user@abc.com - send mail about this job to the given email address.
#$ -m beas          # send a mail to owner when the job
#                       begins (b), ends (e), aborted (a),
#                       and suspended(s).         and suspended(s).

./main

ありがとうございました

4

2 に答える 2

2

最も簡単なオプションは、静的バイナリをコンパイルすることです。(でgcc、を使用します-static。他のコンパイラの場合は、RTFMを使用します。)

もう1つのオプションはLD_LIBRARY_PATH、ジョブスクリプト内のBoostライブラリを含むディレクトリに環境変数を設定することです。

LD_LIBRARY_PATH=/where/ever/you/installed/boost

Boostを自分でインストールしなかった場合は、プログラムがライブラリを探している場所を。で見つけることができますldd main

于 2011-01-19T19:49:02.277 に答える
0

SGEを実行しているプラ​​ットフォームは何ですか?すべてのノードは同じアーキテクチャですか?どのコンパイラを使用していますか?ライブラリは、動的に実行する各ノードの同じ場所に存在する必要があります。@larsmansによって提案されたオプションは、おそらく最良のアイデアです(静的にコンパイルされたバイナリを実行します)。

于 2011-01-19T19:52:17.907 に答える