1

使用しているコードライブラリのmakefileがあり、gslを使用するコードをそのコードに追加しました。gslを呼び出すmakefile(ブーストも呼び出すので保持する必要があります)に何をどのように追加するかはよくわかりません。

これは私のmakefileです:

CXX = g++
ARCH = -mtune=generic
#   ARCH = -march=core2
#   ARCH = -march=native


COFLAGS = $(ARCH) -O3 -pipe
CXXFLAGS = -Wall $(COFLAGS)

PROGRAMS = getData analyzeData
BOOSTFLAGS = -I .
OPENMP = -fopenmp -DSUPPORT_OPENMP

all: $(PROGRAMS)
getData: getData.cpp common.o parse.o common.h
    $(CXX) $(CXXFLAGS) getData.cpp common.o parse.o -o getData
analyzeData:  analyzeData.cpp common.o parse.o parameters.o 
    $(CXX) $(CXXFLAGS) $(BOOSTFLAGS) $(OPENMP) estimateCrossReplicatesExpression.cpp common.o parse.o parameters.o -o analyzeData

parameters.o: parameters.cpp parameters.h
parse.o: parse.cpp parse.h
common.o: common.cpp common.h

clean:
    rm *.o $(PROGRAMS)
4

1 に答える 1

1

GSL がシステムのデフォルト パス (/usr/local/include/gsl) にインストールされている場合、ソース ファイル「example.c」のコンパイル コマンドは次のようになります。

gcc -Wall -I/usr/local/include -c example.c

ライブラリは、単一のファイル libgsl.a としてインストールされます。ライブラリ libgsl.so の共有バージョンも、共有ライブラリをサポートするシステムにインストールされます。これらのファイルのデフォルトの場所は /usr/local/lib です。このディレクトリがリンカーの標準検索パスにない場合は、その場所をコマンド ライン フラグとして指定する必要もあります。

ライブラリにリンクするには、メイン ライブラリと、標準の基本線形代数サブルーチンを提供するサポート cblas ライブラリの両方を指定する必要があります。システムで提供されていない場合は、ライブラリ libgslcblas.a で適切な cblas 実装が提供されます。次の例は、アプリケーションをライブラリにリンクする方法を示しています。

$ gcc -L/usr/local/lib example.o -lgsl -lgslcblas -lm

オプション -lm は、システム数学ライブラリとリンクします。一部のシステムでは必要ありません。

したがって、コンパイル コマンドで gsl 固有のフラグを指定する必要があります。それに応じて Makefile を更新します。

于 2013-01-13T05:07:58.240 に答える