Компилиране, инсталиране и използване на Blosc под CentOS 7 и 8Съдържание:
1. Предварителна информацияBlosc е високоефективен компресор, специално оптимизиран за компресия на данни записани в двоичен формат. Целта на този документ е да предложи рецепта за изграждане на версия на libblosc библиотеката чрез GNU Compilers.
2. Изтегляне на изходния код и компилирането му с GNU CompilersПреди да пристъпите към изтегляне и компилиране на кода, трябва да инсталирате нужните за целта компилатори и помощни библиотеки:
Библиотеката ZSTD, която се използва като зависимост при компилирането, може да компилирате и инсталирате (ако това не е вече направено), използвайки инструкциите в документа "Компилиране, инсталиране и използване на Zstandard (ZSTD) под CentOS 7 и 8". Посетете страницата на файловото хранилище на проекта: https://github.com/Blosc/c-blosc/releases и изтеглете последната стабилна версия на изходния код на библиотеката. За примерите по-долу се предполага, че наличната към момента версия на библиотеката е 1.17.0 (по-времето, по което вие изпълнявате тези инструкции, версията може да е по-висока от 1.17.0): $ wget https://github.com/Blosc/c-blosc/archive/v1.17.0.tar.gz -O c-blosc-1.17.0.tar.gz Създайте директория, в която да извършите компилирането: $ mkdir ~/build Разпакетирайте в нея файла с архива: $ tar xvf c-blosc-1.17.0.tar.gz -C ~/build влезте в новосъздадената при разпакетирането директория: $ cd ~/build/c-blosc-1.17.0 и там изпълнете операциите по компилирането и инсталирането: $ LDFLAGS="-L/usr/unite/zstd-1.4.4-gcc/usr/local/lib -lzstd" cmake3 .. -DCMAKE_INSTALL_PREFIX=/usr/unite/c-blosc-1.17.0-gcc -DPREFER_EXTERNAL_ZSTD=ON -DZSTD_INCLUDE_DIR=/usr/unite/zstd-1.4.4-gcc/usr/local/include -DZSTD_LIBRARY=/usr/unite/zstd-1.4.4-gcc/usr/local/lib/libzstd.so -DPREFER_EXTERNAL_ZSTD=ON $ LD_LIBRARY_PATH=/usr/unite/zstd-1.4.4-gcc/usr/local/lib:$LD_LIBRARY_PATH make -j6 $ LD_LIBRARY_PATH=/usr/unite/zstd-1.4.4-gcc/usr/local/lib:$LD_LIBRARY_PATH make test ВНИМАНИЕ! Пристъпете към инсталирането на продукта на компилация само и единствено, ако всички тестове са проведени успешно! $ make install След успешно извършване на инсталацията, може да изведете списък с библиотеките, към които е динамично свързана библиотеката $ LD_LIBRARY_PATH=/usr/unite/zstd-1.4.4-gcc/usr/local/lib:$LD_LIBRARY_PATH ldd /usr/unite/c-blosc-1.17.0-gcc/lib/libblosc.so Трябва да получите изход, който е подобен на: linux-vdso.so.1 (0x00007ffd52af7000)
libzstd.so.1 => /usr/unite/zstd-1.4.4-gcc/usr/local/lib/libzstd.so.1 (0x00007f75e753f000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f75e731f000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f75e6f8a000)
libm.so.6 => /lib64/libm.so.6 (0x00007f75e6c08000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f75e69f0000)
libc.so.6 => /lib64/libc.so.6 (0x00007f75e662c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f75e7a48000)
Най-важното, за което трябва да проверите в този списък с библиотеки, е наличието на libzstd.so (виж реда оцветен в светло синьо).
3. Динамично свързване на компилираната библиотека към C и C++ приложенияЗа да може даден код да бъде компилиран спрямо динамичната версия на libblosc библиотеката (компилирана по процедурата показана по-горе) при използване на $ CC=gcc CXX=g++ ... ./configure ... CGLAGS="-I/usr/unite/c-blosc-1.17.0-gcc/include" LFLAGS="-L/usr/unite/c-blosc-1.17.0-gcc/lib -lblosc" След успешна компилация спрямо динамичната версия на библиотеката, изпълнимият код трябва да може да зарежда libblosc библиотеката при стартиране. За целта, в текущата сесия на $ export LD_LIBRARY_PATH=/usr/unite/c-blosc-1.17.0-gcc/lib:$LD_LIBRARY_PATH Това зареждане може да бъде направено инцидентно (примера по-горе) или да стане част от постоянните настройки за Когато се използва статичната версия на ZeroMQ библиотеката, самия файл с библиотеката се задава в списъка с бинарни обекти, на база на които компилатора създава изпълнимия код. Например: $ gcc -o test test.c file1.o file2.o -I/usr/unite/c-blosc-1.17.0-gcc/include /usr/unite/c-blosc-1.17.0-gcc/lib/libblosc.a (вместо |
Последна актуализация: 10 декември 2019
2019 УНИТе, Веселин Колев