使文件g++成为共享库

Make file g++ shared library

本文关键字:共享 文件 g++      更新时间:2023-10-16

我试图创建一个库,将来可以与R集成,但也可以在命令行上使用

我的第一步是创建一个库,要么.a,要么.so

这是我的make文件。它编译得很好,但当我看到文件夹是空的时(这意味着我不能在我的wilxtest.cpp 中使用它

EXTERNALLIBS = -lnetcdf_c++ -lgsl -lgslcblas
WILXAPP = src/wilxtest.cpp
CXX = g++
CXXFLAGS = -Wall -ggdb
LIBOBJS: src/wilcoxonParallelTests.o
LIBRARY: lib/WilcoxonParallelTests.a
$(LIBRARY): $(LIBOBJS)
    $(CXX) $(CXXFLAGS) ar cr $(LIBRARY) $(LIBOBJS) $(EXTERNALLIBS)
bin/Debug/WilxAstakTest: $(WILXAPP)
    $(CXX) $(CXXFLAGS) -o $@ $^ $(EXTERNALLIBS)
Debug: $(LIBRARY) bin/Debug/WilxAstakTest
MkDirs:
    mkdir -p obj
    mkdir -p lib
    mkdir -p bin/Debug
cleanDebug:
    rm -rf obj/*
    rm -rf lib/*
    rm -rf bin/Debug/*

编辑:

在伦敦银行同业拆借利率和LIBRARY之后,我用了":"而不是"="。我也没有创建对象文件的目标。这是更新版本:

EXTERNALLIBS = -lnetcdf_c++ -lgsl -lgslcblas
WILXAPP = src/wilxtest.cpp
CXX = g++
CXXFLAGS = -Wall -ggdb
LIBCPP = src/wilcoxonParallelTests.cpp
LIBOBJS = obj/wilcoxonParallelTests.o
LIBRARY = lib/WilcoxonParallelTests.a
$(LIBOBJS): $(LIBCPP)
    $(CXX) $(CXXFLAGS) -c $(LIBCPP) -o $(LIBOBJS)
$(LIBRARY): $(LIBOBJS)
    ar -cr $(LIBRARY) $(LIBOBJS)
bin/Debug/WilxAstakTest: $(WILXAPP) $(LIBRARY)
    $(CXX) $(CXXFLAGS) -o $@ $^ $(EXTERNALLIBS)
Debug: $(LIBRARY) bin/Debug/WilxAstakTest
MkDirs:
    mkdir -p obj
    mkdir -p lib
    mkdir -p bin/Debug
cleanDebug:
    rm -rf obj/*
    rm -rf lib/*
    rm -rf bin/Debug/*

而不是这个:

$(LIBRARY): $(LIBOBJS)
    $(CXX) $(CXXFLAGS) ar cr $(LIBRARY) $(LIBOBJS) $(EXTERNALLIBS)

试试这个:

$(LIBRARY): $(LIBOBJS)
    ar -cr $(LIBRARY) $(LIBOBJS) $(EXTERNALLIBS)

(一旦makefile工作,就有可能进行进一步的改进。)