我有一些我正在使用的代码库的makefile,现在我已经在代码中添加了一些使用gsl的代码。我不太确定如何以及将什么添加到makefile(我会保留,因为它也会调用boost),这将调用gsl。
这是我的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)
答案 0 :(得分: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。