110 lines
3.4 KiB
Markdown
110 lines
3.4 KiB
Markdown
|
Libaio Native Libraries
|
||
|
=======================
|
||
|
|
||
|
ActiveMQ distributes a native library, used as a bridge between ActiveMQ
|
||
|
and Linux libaio.
|
||
|
|
||
|
`libaio` is a library, developed as part of the Linux kernel project.
|
||
|
With `libaio` we submit writes to the operating system where they are
|
||
|
processed asynchronously. Some time later the OS will call our code back
|
||
|
when they have been processed.
|
||
|
|
||
|
We use this in our high performance journal if configured to do so,
|
||
|
please see ?.
|
||
|
|
||
|
These are the native libraries distributed by ActiveMQ:
|
||
|
|
||
|
- libActiveMQAIO32.so - x86 32 bits
|
||
|
|
||
|
- libActiveMQAIO64.so - x86 64 bits
|
||
|
|
||
|
When using libaio, ActiveMQ will always try loading these files as long
|
||
|
as they are on the [library path](#using-server.library.path).
|
||
|
|
||
|
Compiling the native libraries
|
||
|
==============================
|
||
|
|
||
|
In the case that you are using Linux on a platform other than x86\_32 or
|
||
|
x86\_64 (for example Itanium 64 bits or IBM Power) you may need to
|
||
|
compile the native library, since we do not distribute binaries for
|
||
|
those platforms with the release.
|
||
|
|
||
|
Install requirements
|
||
|
--------------------
|
||
|
|
||
|
> **Note**
|
||
|
>
|
||
|
> At the moment the native layer is only available on Linux. If you are
|
||
|
> in a platform other than Linux the native compilation will not work
|
||
|
|
||
|
The native library uses
|
||
|
[autoconf](http://en.wikipedia.org/wiki/Autoconf) what makes the
|
||
|
compilation process easy, however you need to install extra packages as
|
||
|
a requirement for compilation:
|
||
|
|
||
|
- gcc - C Compiler
|
||
|
|
||
|
- gcc-c++ or g++ - Extension to gcc with support for C++
|
||
|
|
||
|
- autoconf - Tool for automating native build process
|
||
|
|
||
|
- make - Plain old make
|
||
|
|
||
|
- automake - Tool for automating make generation
|
||
|
|
||
|
- libtool - Tool for link editing native libraries
|
||
|
|
||
|
- libaio - library to disk asynchronous IO kernel functions
|
||
|
|
||
|
- libaio-dev - Compilation support for libaio
|
||
|
|
||
|
- A full JDK installed with the environment variable JAVA\_HOME set to
|
||
|
its location
|
||
|
|
||
|
To perform this installation on RHEL or Fedora, you can simply type this
|
||
|
at a command line:
|
||
|
|
||
|
sudo yum install automake libtool autoconf gcc-c++ gcc libaio libaio-devel make
|
||
|
|
||
|
Or on Debian systems:
|
||
|
|
||
|
sudo apt-get install automake libtool autoconf gcc-g++ gcc libaio libaio-dev make
|
||
|
|
||
|
> **Note**
|
||
|
>
|
||
|
> You could find a slight variation of the package names depending on
|
||
|
> the version and Linux distribution. (for example gcc-c++ on Fedora
|
||
|
> versus g++ on Debian systems)
|
||
|
|
||
|
Invoking the compilation
|
||
|
------------------------
|
||
|
|
||
|
In the distribution, in the `native-src` directory, execute the shell
|
||
|
script `bootstrap`. This script will invoke `automake` and `make` what
|
||
|
will create all the make files and the native library.
|
||
|
|
||
|
someUser@someBox:/messaging-distribution/native-src$ ./bootstrap
|
||
|
checking for a BSD-compatible install... /usr/bin/install -c
|
||
|
checking whether build environment is sane... yes
|
||
|
checking for a thread-safe mkdir -p... /bin/mkdir -p
|
||
|
|
||
|
...
|
||
|
|
||
|
configure: creating ./config.status
|
||
|
config.status: creating Makefile
|
||
|
config.status: creating ./src/Makefile
|
||
|
config.status: creating config.h
|
||
|
config.status: config.h is unchanged
|
||
|
config.status: executing depfiles commands
|
||
|
config.status: executing libtool commands
|
||
|
|
||
|
...
|
||
|
|
||
|
The produced library will be at
|
||
|
`./native-src/src/.libs/libActiveMQAIO.so`. Simply move that file over
|
||
|
`bin` on the distribution or the place you have chosen on the [library
|
||
|
path](#using-server.library.path).
|
||
|
|
||
|
If you want to perform changes on the ActiveMQ libaio code, you could
|
||
|
just call make directly at the `native-src` directory.
|