簡體   English   中英

制作文件g ++共享庫

[英]Make file g++ shared library

我試圖創建一個我可以在未來與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/*

編輯:

在LIBOBJS和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工作,可以進一步改進。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM