Сборка CoreArray - lanit-tercom-school/analyzeme GitHub Wiki
Описанная на этой странице сборка CoreArray происходила в Ubuntu 15, под Windows он не собирается нормально (но собрать возможно), но судя по коду, автор писал версию и под него. Я использовал виртуальную машину, .ova файл взял отсюда: https://virtualboxes.org/images/ubuntu/
Заходим сюда:
https://github.com/CoreArray/GDSFormat
-> clone or download -> download ZIP.
Распаковываем архив и переходим в папку src.
В ней нужно подменить makefile на тот, что находится в конце этой статьи.
Заходим в эту же папку через терминал, выполняем команду make, ждем.
Утилита сама находит наш измененный makefile и компилирует нужные нам библиотеки.
Вкратце, суть подмены makefile'a сводится к тому, что мы компилируем не статические, а динамические библиотеки и добавляем несколько дополнительных флагов.
Теперь в родительской директории есть папка lib, в которой лежат только что скомпилированные библиотеки.
Скачиваем Eclipse для c++, создаем в нем новый проект (с использованием cross gcc).
Нажимаем правой кнопкой по созданному проекту -> properties -> c/c++ build -> settings -> cross g++ linker -> libraries -> в library search path добавляем адрес папки с библиотеками (заканчивается на lib), в libraries добавляем CoreArray, ZLIB, LZ4. (GenoGDS мы вообще не используем, он довольно бесполезен и почему-то не подключается).
Также в libraries надо добавить pthread (это важно).
Если вы прицепили эти библиотеки в Debug- настройках проекта, то нужно повторить и в Release, и наоборот.
В начале кода подключаем через include заголовочный файл CoreArray.h из src/CoreArray.
В конце нужно положить скомпилированные библиотеки в /lib/ или куда-нибудь еще, где их найдет ldconfig, тогда программа сможет подключить библиотеки в рантайме.
Поздравляю, вы восхитительны!
Вот makefile: /залью, когда пойму, куда/
## This file is part of CoreArray.
##
## CoreArray is free software: you can redistribute it and/or modify it
## under the terms of the GNU Lesser General Public License Version 3 as
## published by the Free Software Foundation.
##
## CoreArray is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU Lesser General Public License for more details.
##
## You should have received a copy of the GNU Lesser General Public
## License along with CoreArray.
## If not, see <http:##www.gnu.org/licenses/>.
## The command which runs the C compiler.
CC = gcc
## Debugging and optimization options for the C compiler.
CFLAGS = -pthread -O2
## The command which runs the C++ compiler.
CXX = g++
## Options for the C++ compiler.
CXXFLAGS = -pthread -O2
## Copy files
CP = cp -f
## Remove directory entries
RM = rm -rf
## Create a directory
MKDIR = mkdir -p
## Create and maintain library archives
AR = gcc -shared -o
## CoreArray library archive file
LIB_COREARRAY_A = ../lib/libCoreArray.so
## CoreArray library object files
LIB_CORE_OBJS = CoreArray.o dAllocator.o dAny.o dBase.o dBitGDS.o \
dEndian.o dFile.o dParallel.o dParallel_Ext.o dPlatform.o dSerial.o \
dStream.o dStruct.o
## CoreArray header files
INC_COREARRAY = -I../include
## zlib library
LIB_ZIP_A = ../lib/libZLIB.so
## ZLIB library object files
LIB_ZLIB_OBJS = adler32.o compress.o crc32.o deflate.o infback.o \
inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o
## lz4 library
LIB_LZ4_A = ../lib/libLZ4.so
## LZ4 library object files
LIB_LZ4_OBJS = lz4.o lz4hc.o lz4frame.o xxhash.o
## lz4 library
LIB_GENOGDS_A = ../lib/libGenoGDS.so
## LZ4 library object files
LIB_GENOGDS_OBJS = GenoGDS.o
## all jobs
all: $(LIB_COREARRAY_A) $(LIB_ZIP_A) $(LIB_LZ4_A) $(LIB_GENOGDS_A)
## Clean and remove files
clean:
$(RM) *.o
$(RM) ../lib/*
$(RM) CoreArray/*.o
$(RM) ZLIB/*.o
$(RM) LZ4/*.o
$(RM) GenoGDS/*.o
## CoreArray library archives
$(LIB_COREARRAY_A): $(LIB_CORE_OBJS)
$(MKDIR) ../lib
$(RM) $(LIB_COREARRAY_A)
$(AR) $(LIB_COREARRAY_A) $(LIB_CORE_OBJS)
## zlib library archives
$(LIB_ZIP_A): $(LIB_ZLIB_OBJS)
$(MKDIR) ../lib
$(RM) $(LIB_ZIP_A)
$(AR) $(LIB_ZIP_A) $(LIB_ZLIB_OBJS)
## lz4 library archives
$(LIB_LZ4_A): $(LIB_LZ4_OBJS)
$(MKDIR) ../lib
$(RM) $(LIB_LZ4_A)
$(AR) $(LIB_LZ4_A) $(LIB_LZ4_OBJS)
## GenoGDS library archives
$(LIB_GENOGDS_A): $(LIB_GENOGDS_OBJS)
$(MKDIR) ../lib
$(RM) $(LIB_GENOGDS_A)
$(AR) $(LIB_GENOGDS_A) $(LIB_GENOGDS_OBJS)
##########################################################################
## CoreArray Library ##
CoreArray.o:
$(CXX) $(CXXFLAGS) $(INC_COREARRAY) CoreArray/CoreArray.cpp -c -Wall -Werror -fpic
dAllocator.o:
$(CXX) $(CXXFLAGS) $(INC_COREARRAY) CoreArray/dAllocator.cpp -c -Wall -Werror -fpic
dAny.o:
$(CXX) $(CXXFLAGS) $(INC_COREARRAY) CoreArray/dAny.cpp -c -Wall -Werror -fpic
dBase.o:
$(CXX) $(CXXFLAGS) $(INC_COREARRAY) CoreArray/dBase.cpp -c -Wall -Werror -fpic
dBitGDS.o:
$(CXX) $(CXXFLAGS) $(INC_COREARRAY) CoreArray/dBitGDS.cpp -c -Wall -Werror -fpic
dEndian.o:
$(CXX) $(CXXFLAGS) $(INC_COREARRAY) CoreArray/dEndian.cpp -c -Wall -Werror -fpic
dFile.o:
$(CXX) $(CXXFLAGS) $(INC_COREARRAY) CoreArray/dFile.cpp -c -Wall -Werror -fpic
dParallel.o:
$(CXX) $(CXXFLAGS) $(INC_COREARRAY) CoreArray/dParallel.cpp -c -Wall -Werror -fpic
dParallel_Ext.o:
$(CC) $(CFLAGS) $(INC_COREARRAY) CoreArray/dParallel_Ext.c -c -Wall -Werror -fpic
dPlatform.o:
$(CXX) $(CXXFLAGS) $(INC_COREARRAY) CoreArray/dPlatform.cpp -c -Wall -Werror -fpic
dSerial.o:
$(CXX) $(CXXFLAGS) $(INC_COREARRAY) CoreArray/dSerial.cpp -c -Wall -Werror -fpic
dStream.o:
$(CXX) $(CXXFLAGS) $(INC_COREARRAY) CoreArray/dStream.cpp -c -Wall -Werror -fpic
dStruct.o:
$(CXX) $(CXXFLAGS) $(INC_COREARRAY) CoreArray/dStruct.cpp -c -Wall -Werror -fpic
## ZLIB Library ##
adler32.o:
$(CC) $(CFLAGS) ZLIB/adler32.c -c -Wall -Werror -fpic
compress.o:
$(CC) $(CFLAGS) ZLIB/compress.c -c -Wall -Werror -fpic
crc32.o:
$(CC) $(CFLAGS) ZLIB/crc32.c -c -Wall -Werror -fpic
deflate.o:
$(CC) $(CFLAGS) ZLIB/deflate.c -c -Wall -Werror -fpic
infback.o:
$(CC) $(CFLAGS) ZLIB/infback.c -c -Wall -Werror -fpic
inffast.o:
$(CC) $(CFLAGS) ZLIB/inffast.c -c -Wall -Werror -fpic
inflate.o:
$(CC) $(CFLAGS) ZLIB/inflate.c -c -Wall -Werror -fpic
inftrees.o:
$(CC) $(CFLAGS) ZLIB/inftrees.c -c -Wall -Werror -fpic
trees.o:
$(CC) $(CFLAGS) ZLIB/trees.c -c -Wall -Werror -fpic
uncompr.o:
$(CC) $(CFLAGS) ZLIB/uncompr.c -c -Wall -Werror -fpic
zutil.o:
$(CC) $(CFLAGS) ZLIB/zutil.c -c -Wall -Werror -fpic
## LZ4 Library ##
lz4.o:
$(CC) $(CFLAGS) LZ4/lz4.c -c -Wall -Werror -fpic
lz4hc.o:
$(CC) $(CFLAGS) LZ4/lz4hc.c -c -Wall -Werror -fpic
lz4frame.o:
$(CC) $(CFLAGS) LZ4/lz4frame.c -c -Wall -Werror -fpic
xxhash.o:
$(CC) $(CFLAGS) LZ4/xxhash.c -c -Wall -Werror -fpic
## GenoGDS Library ##
GenoGDS.o: GenoGDS/GenoGDS.h GenoGDS/GenoGDS.cpp
$(CXX) $(CXXFLAGS) $(INC_COREARRAY) GenoGDS/GenoGDS.h GenoGDS/GenoGDS.cpp -c -Wall -Werror -fpic