Компилиране, инсталиране и използване на SZ под 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 е тя е достатъчно добра за компилирането на кода под тази дистрибуция. Следните пакети трябва да бъдат инсталирани преди да започнете с изпълнение на процедурите, описани по-долу:
Библиотеката ZSTD, която се използва като зависимост при компилирането, може да компилирате и инсталирате (ако това не е вече направено), използвайки инструкциите в документа "Компилиране, инсталиране и използване на Zstandard (ZSTD) под CentOS 7 и 8". За да изтеглите поседната стабилна версия на изходния програмен код, посетете хранилището на проекта: https://github.com/disheng222/SZ/releases Връзката за изтегляне на архива в изходния код е в текста на страницата. За примерите по-долу се предполага, че наличната към момента версия на библиотеката е 1.9.0 (по-времето, по което вие изпълнявате тези инструкции, версията може да е по-висока от 1.9.0): $ wget https://github.com/disheng222/SZ/archive/v2.1.8.0.tar.gz -O SZ-2.1.8.0.tar.gz Създайте директория, в която ще се извършва процеса на разпакетиране, конфигуриране и компилиране: $ mkdir ~/build Разпакетирайте в нея файла с архива: $ tar xvf SZ-2.1.8.0.tar.gz -C ~/build влезте в новосъздадената при разпакетирането директория: $ cd ~/build/SZ-2.1.8.0 и в нея изпълнете: $ scl enable devtoolset-8 bash $ CFLAGS="-I/usr/unite/zstd-1.4.4-gcc/usr/local/include" LD_LIBRARY_PATH=/usr/unite/zstd-1.4.4-gcc/usr/local/lib:$LD_LIBRARY_PATH LDFLAGS="-L/usr/unite/zstd-1.4.4-gcc/usr/local/lib -lzstd" ./configure --prefix=/usr/unite/sz-2.1.8.0-gcc --enable-openmp --enable-gsl --enable-fortran --enable-randomaccess $ make -j6 $ make install Може би най-важната част от пост-инсталационния процес е да премахнете библиотеките на Zstandard и ZLIB, които са вградени и компилирани в кода на проекта SZ: $ $ rm -f /usr/unite/sz-2.1.8.0-gcc/lib/libzstd.* rm -f /usr/unite/sz-2.1.8.0-gcc/lib/libzlib.* Може да проверите и дали библиотеката $ ldd /usr/unite/sz-2.1.8.0-gcc/lib/libSZ.so и трябва да получите следния резултат: linux-vdso.so.1 (0x00007ffeb89e9000) libgsl.so.23 => /lib64/libgsl.so.23 (0x00007fabb9df2000) libgslcblas.so.0 => /lib64/libgslcblas.so.0 (0x00007fabb9bb3000) libgfortran.so.5 => /lib64/libgfortran.so.5 (0x00007fabb9738000) libm.so.6 => /lib64/libm.so.6 (0x00007fabb93b6000) libgomp.so.1 => /lib64/libgomp.so.1 (0x00007fabb9186000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fabb8f6e000) libquadmath.so.0 => /lib64/libquadmath.so.0 (0x00007fabb8d2d000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fabb8b0d000) libc.so.6 => /lib64/libc.so.6 (0x00007fabb8749000) libz.so.1 => /lib64/libz.so.1 (0x00007fabb8532000) /lib64/ld-linux-x86-64.so.2 (0x00007fabba59c000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fabb832e000)
3. Динамично свързване на компилираната библиотека към C/C++ приложенияЗа да може даден код да бъде компилиран спрямо динамичната версия на libfabric библиотеката (компилирана по процедурата показана по-горе), освен описание на използваните от нея функции в кода, в процеса на конфигурацията или компилацията трява да бъат посочени пътищата до хедър файловете и директорията, която съдържа библиотеката (и нейното име): $ CC=gcc CXX=g++ ./configure ... CGLAGS="-I/usr/unite/zstd-1.4.4-gcc/usr/local/include -I/usr/unite/zstd-1.4.4-gcc/usr/local/include" LFLAGS="-L/usr/unite/sz-2.1.8.0-gcc/lib -lSZ" След успешна компилация спрямо динамичната версия на библиотеката, изпълнимият код трябва да може да зарежда $ export LD_LIBRARY_PATH=/usr/unite/sz-2.1.8.0-gcc/lib:$LD_LIBRARY_PATH Това зареждане може да бъде направено инцидентно (примера по-горе) или да стане част от постоянните настройки за Когато се използва статичната версия на libSZ библиотеката, самия файл с библиотеката се задава в списъка с бинарни обекти, на база на които компилатора създава изпълнимия код. Например: $ gcc -I/usr/unite/zstd-1.4.4-gcc/usr/local/include -I/usr/unite/zstd-1.4.4-gcc/usr/local/include -o test test.c file1.o file2.o /usr/unite/sz-2.1.8.0-gcc/lib/libSZ.a /usr/unite/zstd-1.4.4-gcc/usr/local/lib/libzstd.a
4. Упътвания за директно използване на инструмента
|
Последна актуализация: 9 декември 2019
2019 УНИТе, Веселин Колев