Компилиране, инсталиране и използване на ZFP под CentOS 7 и 8Съдържание:
1. Предварителна информацияZfp е библиотека за компресия на числови данни без загуба на информация (загуба на точнос). Целта на този документ е да предложи рецепта за изграждане на версия на zfp библиотеката, чрез използване на GNU Compilers. Отбележете, че използването на Intel Compilers и/или PGI Compilers за компилиране на кода, не повишава скоростта на компресия или декомпресия и именно затова предложената по-долу процедура за изграждането на библиотеката е базирана на използването на GNU Compilers.
2. Изтегляне на изходния код и компилирането му с GNU CompilersПосетете страницата на файловото хранилище на проекта: https://github.com/LLNL/zfp/releases и изтеглете последната версия на програмния код. За примерите по-долу се предполага, че наличната към момента версия на библиотеката е 0.5.5 (по-времето, по което вие изпълнявате тези инструкции, версията може да е по-висока от 0.5.5): $ wget https://github.com/LLNL/zfp/archive/0.5.5.tar.gz -O zfp-0.5.5.tar.gz Създайте директория, в която да извършите компилирането: $ mkdir ~/build Разпакетирайте в нея файла с архива: $ tar xvf zfp-0.5.5.tar.gz -C ~/build влезте в новосъздадената при разпакетирането директория: $ cd ~/build/zfp-0.5.5 и там изпълнете операциите по компилирането и стартиране на тестовете: $ cmake3 .. -DCMAKE_INSTALL_PREFIX=/usr/unite/zfp-0.5.5-gcc $ make -j12 $ make test Резултатът от изпълнението на тестовете ще изглежда по следния начин: Running tests... Test project /home/vesso/build/zfp-0.5.5/build Start 1: small-arrays-1d-fp32 1/8 Test #1: small-arrays-1d-fp32 ............. Passed 0.01 sec Start 2: small-arrays-1d-fp64 2/8 Test #2: small-arrays-1d-fp64 ............. Passed 0.01 sec Start 3: small-arrays-2d-fp32 3/8 Test #3: small-arrays-2d-fp32 ............. Passed 0.01 sec Start 4: small-arrays-2d-fp64 4/8 Test #4: small-arrays-2d-fp64 ............. Passed 0.01 sec Start 5: small-arrays-3d-fp32 5/8 Test #5: small-arrays-3d-fp32 ............. Passed 0.01 sec Start 6: small-arrays-3d-fp64 6/8 Test #6: small-arrays-3d-fp64 ............. Passed 0.01 sec Start 7: small-arrays-4d-fp32 7/8 Test #7: small-arrays-4d-fp32 ............. Passed 0.01 sec Start 8: small-arrays-4d-fp64 8/8 Test #8: small-arrays-4d-fp64 ............. Passed 0.01 sec 100% tests passed, 0 tests failed out of 8 Total Test time (real) = 0.09 sec ВНИМАНИЕ! Пристъпете към инсталирането на продукта на компилация само и единствено, ако всички тестове са проведени успешно! След това изградете и статичната версия на библиотеката: $ cmake3 .. -DCMAKE_INSTALL_PREFIX=/usr/unite/zfp-0.5.5-gcc -DBUILD_SHARED_LIBS=OFF $ make -j12 и инсталирайте: $ make install След успешно извършване на инсталацията, може да изведете списък с библиотеките, към които е динамично свързана библиотеката $ ldd /usr/unite/zfp-0.5.5-gcc/lib64/libzfp.so Трябва да получите изход, който е подобен на: linux-vdso.so.1 (0x00007ffe8e930000) libgomp.so.1 => /lib64/libgomp.so.1 (0x00007f9ab6c30000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9ab6a10000) libm.so.6 => /lib64/libm.so.6 (0x00007f9ab668e000) libc.so.6 => /lib64/libc.so.6 (0x00007f9ab62ca000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f9ab60c600) /lib64/ld-linux-x86-64.so.2 (0x00007f9ab708e000)
3. Динамично свързване на компилираната библиотека към C/C++ и Fortran приложенияЗа да може даден код да бъде компилиран спрямо динамичната версия на zfp библиотеката (компилирана по процедурата показана по-горе) при използване на $ CC=gcc CXX=g++ ./configure ... CGLAGS="-I/usr/unite/zfp-0.5.5-gcc/include" LFLAGS="-L/usr/unite/zfp-0.5.5-gcc/lib64 -lzfp" След успешна компилация спрямо динамичната версия на библиотеката, изпълнимият код трябва да може да зарежда zfp библиотеката при стартиране. За целта, в текущата сесия на $ export LD_LIBRARY_PATH=/usr/unite/zfp-0.5.5-gcc/lib64:$LD_LIBRARY_PATH Това зареждане може да бъде направено инцидентно (примера по-горе) или да стане част от постоянните настройки за Когато се използва статичната версия на zfp библиотеката, самия файл с библиотеката се задава в списъка с бинарни обекти, на база на които компилатора създава изпълнимия код. Например: $ gcc -o test test.c file1.o file2.o -I/usr/unite/zfp-0.5.5-gcc/include /usr/unite/zfp-0.5.5-gcc/lib64/libzfp.a (вместо |
Последна актуализация: 10 декември 2019
2019 УНИТе, Веселин Колев