简体   繁体   English

制作文件g ++共享库

[英]Make file g++ shared library

Im trying to create a library that i could integrate with R in the future, but also use on Command Line 我试图创建一个我可以在未来与R集成的库,但也可以在命令行上使用

My first step in the path is creating a library, either .a or .so 我在路径中的第一步是创建一个库,.a或.so

This is my make file. 这是我的make文件。 It compiles fine, but when i look at the folders are empty(Which means i cannot use it in my wilxtest.cpp 它编译得很好,但当我看到文件夹是空的(这意味着我不能在我的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/*

EDITED: 编辑:

I had ":" instead of "=" after LIBOBJS and LIBRARY. 在LIBOBJS和LIBRARY之后我有“:”而不是“=”。 I also didnt have a target to create object file. 我也没有创建目标文件的目标。 Here is the updated version: 这是更新版本:

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/*

Instead of this: 而不是这个:

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

try this: 尝试这个:

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

(Further improvements are possible, once the makefile works.) (一旦makefile工作,可以进一步改进。)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM