2013-03-16 9 views
5

現在、C++でプログラムのMakeFilesを作成して使用する方法を学んでいます。私は通常の.cppクラスのMakefileを作成して実行することができましたが、テストクラスに問題があります。テストのために私は、コード::ブロックでGTESTを使用していて、「リンカ設定」での私のTest_A.cppファイルに私が追加:ユニットテストファイル用のMakefileにgtestライブラリを含める:

/usr/lib/libgtest.a 
/usr/lib/libgtest_main.a 

と、私は「-pthread」を入れ、他のリンカオプションのために。私は、これらのライブラリをある意味でmakefileに追加する必要があることを知っていますが、どうすればいいのか分かりません。私はもともと、彼らは3行目で追加する必要があると思ったが、すべて私がタイプのエラーのラインのリターンの何千ものを試してください:

undefined reference to `testing::Test::TearDown() 
undefined reference to `testing::Test::~Test() etc.... 

私のメイクファイル:

1. all: Test 

2. Test_A.o: Test_A B.h 
3.  g++ -c Test_A.cpp -o Test_A.o 

4. Test: Test_A.o 
5.  g++ -o Test Test_A.o 

6. clean: 
7.  rm -rf *o *~ 

答えて

6

ライブラリがリンク行に追加されます。

6

最後のバイナリをビルドするときに、ライブラリ名のリストをリンカに渡す必要があります。 LDFLAGSは、リンカーに渡されるフラグのリストを示すためにMakefilesで使用される変数です。ライブラリlibabc.aまたはlibabc.soに対してリンクする

  • 、あなたは-labcとしてリンカフラグを渡す必要があります。

  • ライブラリの場所を指定するには、-Lフラグを使用する必要があります。リンカはまた、/etc/ld.so.confで定義されたディレクトリに加えて、ライブラリのディレクトリをLD_LIBRARY_PATHで検索します。

-L/usr/libは(あなたのディストリビューションはすでに/usr/libからライブラリをピックアップしてld.so.confを設定している必要があるため)、あなたのケースではオプションですが、私はあなたが変更したいだけの場合には、以下のことを示してきました別の場所に移動します。

LDFLAGS := -lpthread -lgtest -lgtest_main -L/usr/lib 

all: Test 

Test_A.o: Test_A B.h 
    g++ -c Test_A.cpp -o Test_A.o 

Test: Test_A.o 
    g++ -o Test Test_A.o $(LDFLAGS) 

clean: 
    rm -rf *o *~ 
+0

https://stackoverflow.com/questions/10315016/error-during-making-gtestに従って-lpthread AFTER -lgtest_main.aを入力する必要がありました。 – Will

関連する問題