/elf

Cross-platform C++ library for ELF file format manipulation

Primary LanguageCBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

unmaintained build status coverity status

elf

ELF is a cross-compile, cross-platform C++ library that represents ELF file format The library includes an easy abstraction layer for OS-dependent code.

Requirements

Windows

Need Visual Studio Express 2010 or higher, or Visual Studio 2010 or higher.

Ubuntu (Debian)

sudo apt-get install automake autoconf libtool build-essential git-core

CentOS/Fedora/Redhat

  • Building tools sudo yum install autoconf automake gcc-c++ sudo dnf install autoconf automake gcc-c++

Some distributions of CentOS have a problem with libstd++ (need to check). For some reason the symbol __cxa_get_exception_ptr is not defined.

ArchLinux

  • Building tools sudo pacman -S base-devel automake autoconf git sudo pacman -S gcc-multilib libtool-multilib binutils-multilib

Cygwin

Install cygwin with the following packages:

  • gcc
  • g++
  • automake
  • autoconf
  • libtool

Setting Up Environment

Git

git clone https://github.com/eladraz/xStl
git clone https://github.com/eladraz/elf

Compilation Shortcut (build.sh script)

Set up the following environment variables:

export XSTL_PATH=`pwd`/xStl

Windows

In order to pass variable arguments to Visual Studio, you need to declare the following system arguments:

  • XSTL_PATH (for example: C:\WORK\github\xStl)
  • ELFLIB_PATH (for example: C:\WORK\github\elf)

To add system variables you should:

  • Right-click My Computer, and then click Properties.
  • Click the Advanced tab.
  • Click Environment variables.
  • Click New to add a new variable name (e.g. XSTL_PATH) and its location (e.g. C:\WORK\github\xStl).

How to Build

CMake

CMake is cross-compile system for many platform and many system. You can read about it more here

Here is a quick example on how to run xStl with ninja build:

mkdir build
cd build
cmake -G Ninja ..
ninja -j

Linux

Build all projects (the default configuration of the compilation script is the debug/unicode version):

cd elf
./build.sh
cd ../

In order to compile elf you can simply run build.sh:

#/bin/sh
PWD=`pwd`
./autogen.sh && ./configure [--prefix=${PWD}/out] [--enable-debug] [--enable-unicode] [--enable-tests] && make -j4 && make install

Compile

  1. Run ./autogen.sh in order to generate Makefile configure script.
  2. Run ./configure to generate Makefile (see Configure Argument section, below).
  3. Run make and make install.

Configure Argument

  • --enable-debug Compile with debugging flags
  • --enable-unicode Compile with UNICODE support
  • --enable-tests Compile xStl_tests

Cross-Compile

In order to cross-compile (ARM, for example):

./autogen.sh
./configure --build= --host=arm-none-linux-gnueabi

Please note that it is important to have a PATH to the cross-compiler bin folder (e.g. arm-none-linux-gnueabi-g++).

Windows

In order to build the elf library, open elf.sln solution project with Visual Studio. In Visual Studio's configuration manager, choose the desired build configuration (Win32/x64/Debug/Release) and build elf.

License

Please see LICENSE file