FPLLL Installation, Compilation, Dependencies

Martin R. Albrecht 2017/07/06

Outline

Build

Dependencies

Build

TL;DR

1. ./autogen.sh (when building from Git) 2. ./configure (optional: --prefix=$PREFIX) 3. make (optional: -jX for X cores) 4. make check 5. make install Note If you used a prefix, you might need to use $ LD_LIBRARY_PATH=$PREFIX/lib fplll …

Autotools

aclocal

aclocal.m4 autoconf

configure

automake

Makefile.in

Makefile.am

configure.ac autoheader

config.h.in

config.h config.status Makefile

make

executable

Autotools: ./autogen.sh

aclocal

aclocal.m4

autoheader

config.h.in

autoconf

configure

automake

Makefile.in

configure.ac

Makefile.am

Calling ./autogen.sh

Autotools: continued

config.h.in config.h Makefile.in

config.status Makefile

make

executable configure

Calling ./configure && make

See also

https://autotools.io/index.html

Files: configure.ac

• configuration options • finding dependencies and their flags • version numbers

Versions

There are two version numbers attached to each fplll release: 1. human-readable version number AC_INIT(fplll, 5.1.0) FPLLL_MAJOR_VERSION=`echo AC_PACKAGE_VERSION | awk -F. '{print $1}'` FPLLL_MINOR_VERSION=`echo AC_PACKAGE_VERSION | awk -F. '{print $2}'` FPLLL_MICRO_VERSION=`echo AC_PACKAGE_VERSION | awk -F. '{print $3}'` FPLLL_VERSION=… FPLLL_VERSION_NUMBER=…

2. Application binary interface (ABI) version number1 FPLLL_LT_CURRENT=3 FPLLL_LT_REVISION=0 FPLLL_LT_AGE=0

1

This will produce a file libfplll.so.3.0.0

ABI Version Number

The version of the libtool library is of the form current:revision:age2 When doing a release, they should be updated like this: 1. If no interfaces changed, only implementations: just increment revision. 2. If interfaces were added, none removed: increment current, set revision to zero and increment age. 3. If interfaces were removed (breaks backward compatibility): increment current, and set both revision and age to zero.

2

http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html

Files: Makefile.am

• which files belongs to which binary • what files to install in addition to binaries • one Makefile.am per directory

Debugging

1. CXXFLAGS="-O0 -ggdb -DDEBUG" ./configure 2. make V=1 (V=1 gives more detailed outputs) 3. make check 4. make install (our tests use the installed libfplll Note You can also use ./configure --disable-silent-rules to enable more verbose output when building by default.

Faster Builds

By default, libtool builds everything twice, one for the static and one for the dynamic library.3 If you want to avoid this double compiling time you can run ./configure --disable-static which disables building the static library.

3

https://stackoverflow.com/questions/572760/libtool-slowness-double-building

Prefixes i

It is highly recommended that you do not install fplll into your standard path • It will break, leaving you without a working fplll • Comparing your code with the released code will be useful for debugging • You may want to compile with debugging flags and without optimisations

Prefixes ii

I use Python virtual environments. 1. Creating a new virtual environment virtualenv env

2. Using a virtual environment4 source ./env/bin/activate export PKG_CONFIG_PATH="$VIRTUAL_ENV/lib/pkgconfig:$PKG_CONFIG_PATH" export LD_LIBRARY_PATH="$VIRTUAL_ENV/lib" ./configure --prefix="$VIRTUAL_ENV"

4

See https://github.com/fplll/fpylll for how to add the exports to activate

Adding a new file

• add filename to e.g. libfplll_la_SOURCES in fplll/Makefile.am • add header filename to nobase_include_fplll_HEADERS in fplll/Makefile.am • add test filename to tests/Makefile.am

Dependencies

GMP

https://gmplib.org

• used for arbitrary precision integers • fplll will refuse to compile without it • used by default, but you can also use machine integers5

5

No idea what difference that makes in terms of performance.

MPFR

http://www.mpfr.org

• used for arbitrary precision floating-point numbers • fplll will refuse to compile without it • default is native double precision • rule of thumb: if you have to use MPFR, you’re dead performance-wise

JSON

https://github.com/nlohmann/json

• used to read BKZ strategies • included in fplll • could be utilised more for log files etc.

Optional: QD

http://crd-legacy.lbl.gov/~dhbailey/mpdist/

• used for higher precision floating-point numbers • fplll will compile without it • contains double double and quad double type • it seems quad double is not faster than MPFR 6

6

https://github.com/fplll/fplll/issues/77

Fin

Thank You

FPLLL - Installation, Compilation, Dependencies - GitHub

Jul 6, 2017 - 2. ./configure (optional: --prefix=$PREFIX). 3. make (optional: -jX for X ... .gnu.org/software/libtool/manual/html_node/Updating-version-info.html ...

131KB Sizes 8 Downloads 126 Views

Recommend Documents

installation manual - GitHub
May 8, 2014 - 2. MEGAlib download: It will check if MEGAlib is present. If not it will ..... the source code through the following html file: doc/html/index.html. 9.

Installation Guide - GitHub
Create the database tables. 3.2.5. (Optional) ... hedgehog Data Manager This is the user that will own the database created by. Hedgehog .... link on Homepage.

Greenplum Chorus 2.0 Installation Guide - GitHub
Dec 10, 2012 - Use, copying, and distribution of any EMC software described in this publication requires an applicable software .... management systems, database administration, and structured query language (SQL). ... questions about your account. .

Digests Compilation
technology (e.g. Sociology) or (3) a creator of business value derived from technological and social structures of the new web (e.g. Business Administration). From the perspective of the authors of this paper, Web 2.0 is a natural evolution of the we

Geoportal Server 1.2.2 Installation Guide For Linux - GitHub
grants_linuxpg.sh [host] [port] [database] [geoportal schema] [postgresUser]. [geoportal ... [geoportal server] is the name of the geoportal web application server.

Geoportal Server 1.2.2 Installation Guide for WebLogic - GitHub
After you've obtained the .jar file, you will need to copy it to your WebLogic deployment and add it to the WebLogic domain classpath, following the steps below:.

Generalized File System Dependencies - SOSP 2007
Oct 14, 2007 - A patch represents both a change to disk data and any dependen- ... Permission to make digital or hard copies of all or part of this work for.

compilation asa akira.pdf
cumpilation. Spankwire. asa akira compilation. Asa akira anal crazyjizz.comfree porn videos. Asa akira compilation,. free asian porn video 3c xhamster. Asa akira compilation. pornhub.com. Youporn compilation videos xxx, free porn movies. Asa akira ho

Secure Dependencies with Dynamic Level ... - Semantic Scholar
evolve due to declassi cation and subject current level ... object classi cation and the subject current level. We ...... in Computer Science, Amsterdam, The Nether-.

Framing Dependencies Introduced by Underground ... - Damon McCoy
International Computer Science Institute .... and ever increasing degrees of specialization. ..... variants that can be cleaned up by purchasing a one-year sub-.

Framing Dependencies Introduced by Underground ... - Damon McCoy
and fragile homogeneous software systems provided fertile ground for the .... which primarily exist to support traditional crime using online distribution channels. [21] ... the spammer first requires a multitude of fake accounts to post messages.

Program Modules, $eparate Compilation, and ...
agated to other modules and ( 2 ) no code is generated for module language ..... The specialisation of ModML functors is much similar to ho w Ada generic.

Open BEAGLE Compilation HOWTO
Oct 10, 2005 - This document is on the compilation of the Open BEAGLE1 C++ framework for evolutionary computations. ..... #define BEAGLE_FULL_DEBUG.