2017-01-23 5 views
-1

私は図書館ケソの簡単な例を実行しようとしていた、ここでライブラリに関する情報は以下のとおりです。私は、このことを私自身のMakefileを作成し、例を実行しようとするために、マニュアルに従っhttp://www.quest-scidac.org/software/queso/Makefileに何か問題がありますか?最近

私Makefieです:

QUESO_DIR = /project/xfu/apps/queso-0.56.1 
BOOST_DIR = /share/apps/boost-1.57 
GSL_DIR = /project/cacds/apps/gsl/1.16 

INC_PATHS = -I$(QUESO_DIR)/include -I$(BOOST_DIR)/include/boost -I$(GSL_DIR)/include/gsl 

LIBS = \ 
-L$(QUESO_DIR)/lib -lqueso \ 
-L$(BOOST_DIR)/lib -lboost_program_options \ 
-L$(GSL_DIR)/lib -lgsl 

CXX = mpic++ 
CXXFLAGS += -g -Wall -c 

default : all 
.SUFFIXES : .o .C 
all : example_sip 
clean : 
    rm -f *~ 
    rm -f *.o 
    rm -f simple_sip_example 

example_sip : example_main.o example_likelihood.o example_compute.o 
    $(CXX) example_main.o \ 
      example_likelihood.o \ 
      example_compute.o \ 
      -o simple_sip_example $(LIBS) 
%.o: %.C 
    $(CXX) $(INC_PATHS) $(CXXFLAGS) $(LIBS) $< 

これはユーザーマニュアル上のMakefileです: enter image description here

私はユーザーマニュアルに従い、ライブラリのパスのみが変更されました。

mpic++ -I/project/xfu/apps/queso-0.56.1/include -I/share/apps/boost-1.57/include/boost 
-I/project/cacds/apps/gsl/1.16/include/gsl -g -Wall -c 
-L/project/xfu/apps/queso-0.56.1/lib -lqueso -L/share/apps/boost-1.57/lib 
-lboost_program_options -L/project/cacds/apps/gsl/1.16/lib -lgsl example_main.C 
In file included from /project/xfu/apps/queso-0.56.1/include/queso/Environment.h:38, 
      from example_compute.h:28, 
      from example_main.C:25: 
/project/xfu/apps/queso-0.56.1/include/queso/ScopedPtr.h:44: error: ISO C++ forbids declaration of 'unique_ptr' with no type 
/project/xfu/apps/queso-0.56.1/include/queso/ScopedPtr.h:44: error: typedef name may not be a nested-name-specifier 
/project/xfu/apps/queso-0.56.1/include/queso/ScopedPtr.h:44: error: expected ';' before '<' token 
In file included from example_compute.h:28, 
      from example_main.C:25: 
/project/xfu/apps/queso-0.56.1/include/queso/Environment.h:380: error: 'Type' in class 'QUESO::ScopedPtr<QUESO::GetPot>' does not name a type 
make: *** [example_main.o] Error 1 

あなたはこれらのエラーは、ライブラリのヘッダファイルから来た見ることができます:私はmake -f Makefile_1を入力するときしかし、私はこれらのエラーを得ました。ソースファイルはライブラリからのもので、私はMakefileのみを書きました。私はこの例を学校のクラスターで実行しています。それは、ITがそれをインストールしたためにライブラリに問題はありません。だから私は問題が私のMakefileから来るかもしれないと思うが、私はちょうどユーザマニュアルに従った。 ありがとうございます!

+0

あなたは '%.o'に' $(LIBS) 'を追加しました。' $。LIBS 'を '%.o'に追加しました。 – cpatricio

+0

あなたのコードにエラーが本当にあるかもしれません。 #include 'あなたのコードが標準ヘッダに影響を与える可能性があります。例えば、 'ScopedPtr.h'が望む共通のシンボルに'#define'を使用した場合などです。ここで質問された質問から実際にどのようなものかを知る方法はありません。 – MadScientist

+0

@cpatricioああ、指摘していただきありがとうございます。でも、$(LIBS)を削除しても同じです。 – Han

答えて

0

問題が解決しました。これはC++ 11標準のためです。 QUESOはデフォルトでC++ 11でビルドされていたようですが、私のgccバージョンはC++ 11をサポートしていませんでした。 gccを更新してライブラリを再構築した後、-std=c++11を使用していることを確認してください。このような問題はありません。

関連する問題