Компилиране, инсталиране и използване на Zstandard (ZSTD) под CentOS 7 и 8Съдържание:
1. Предварителна информацияZstandard (ZSTD) е библиотека за реализиране на компресор/декомпресор за данни, без загуба. Целта на този документ е да предложи рецепта за изграждане на версия на последната версия на библиотеката за CentOS 7 и 8, с използването на GNU Compilers. Използването на Intel Compilers и/или PGI Compilers за компилирането на изходния код, не носи по-висока скорост на изпълнение.
2. Изтегляне на изходния код и компилирането му с GNU CompilersЗа да може да създадете стабилно функционираща алтернативна libfabric библиотека под CentOS 7, се изисква да компилирате кода чрез GCC 8.3.1. Как да инсталирате тази версия е описано в документа "Инсталиране и използване на алтернативни версии на GCC компилаторите под CentOS 7". Подразбираща се версия на GCC в CentOS 8 е 8.2.1 е тя е достатъчно добра за компилирането на кода под тази дистрибуция. Следните пакети трябва да бъдат инсталирани преди да започнете с изпълнение на процедурите, описани по-долу:
За да изтеглите поседната стабилна версия на изходния програмен код, посетете хранилището на проекта: https://github.com/facebook/zstd/releases Връзката за изтегляне на архива в изходния код е в текста на страницата. За примерите по-долу се предполага, че наличната към момента версия на библиотеката е 1.4.4 (по-времето, по което вие изпълнявате тези инструкции, версията може да е по-висока от 1.4.4): $ wget https://github.com/facebook/zstd/archive/v1.4.4.tar.gz -O zstd-1.4.4.tar.gz Създайте директория, в която ще се извършва процеса на разпакетиране, конфигуриране и компилиране: $ mkdir ~/build Разпакетирайте в нея файла с архива: $ tar xvf zstd-1.4.4.tar.gz -C ~/build влезте в новосъздадената при разпакетирането директория: $ cd ~/build/zstd-1.4.4 и в нея изпълнете:
Проверете дали наистина библиотеката е инсталирана. Това може да направите, като изпълните: $ ldd /usr/unite/zstd-1.4.4-gcc/usr/local/lib/libzstd.so Трябва да получите списък подобен на следния: linux-vdso.so.1 (0x00007ffcaf1b7000) libc.so.6 => /lib64/libc.so.6 (0x00007f5b31619000) /lib64/ld-linux-x86-64.so.2 (0x00007f5b31cab000)
3. Динамично свързване на компилираната библиотека към C/C++ приложенияЗа да може даден код да бъде компилиран спрямо динамичната версия на libzstd библиотеката (компилирана по процедурата показана по-горе), освен описание на използваните от нея функции в кода, в процеса на конфигурацията или компилацията трява да бъат посочени пътищата до хедър файловете и директорията, която съдържа библиотеката (и нейното име): $ CC=gcc CXX=g++ ./configure ... CGLAGS="-I/usr/unite/zstd-1.4.4-gcc/usr/local/include" LFLAGS="-L/usr/unite/zstd-1.4.4-gcc/usr/local/lib -lzstd" След успешна компилация спрямо динамичната версия на библиотеката, изпълнимият код трябва да може да зарежда libzstd библиотеката при стартиране. За целта, в текущата сесия на $ export LD_LIBRARY_PATH=/usr/unite/zstd-1.4.4-gcc/usr/local/lib:$LD_LIBRARY_PATH Това зареждане може да бъде направено инцидентно (примера по-горе) или да стане част от постоянните настройки за Когато се използва статичната версия на libzstd библиотеката, самия файл с библиотеката се задава в списъка с бинарни обекти, на база на които компилатора създава изпълнимия код. Например: $ gcc -I/usr/unite/zstd-1.4.4-gcc/usr/local/include -o test test.c file1.o file2.o /usr/unite/zstd-1.4.4-gcc/usr/local/lib/libzstd.a (може да компилирате и с използване на |
Последна актуализация: 9 декември 2019
2019 УНИТе, Веселин Колев