Сделать файл g ++ общей библиотекой

Я пытаюсь создать библиотеку, которую я мог бы интегрировать с 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 и БИБЛИОТЕКИ. У меня также не было цели для создания объектного файла. Вот обновленная версия:

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

0

Решение

Вместо этого:

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

попробуй это:

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

(Возможны дальнейшие улучшения, как только сработает make-файл.)

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]