Tuesday, November 03, 2015

Installing log4cxx and rdkafka libraries on Ubuntu 14.04 (@VirtualBox)

Installing log4cxx

sudo apt-get install autoconf automake
sudo apt-get install libxml2 libxml2-dev
sudo apt-get install libboost-dev
sudo apt-get install libcppunit-dev

sudo apt-get install libapr1 libaprutil1
sudo apt-get install liblog4cxx10 liblog4cxx10-dev 

If you want to check where it was installed:

sudo dpkg -L liblog4cxx10

For QtCreator add to your ".pro" project file the following:

LIBS += -lapr-1 -laprutil-1 -llog4cxx

(reference)

Installing csi-kafka from the source:

# pre-requisits
 
sudo apt-get install -y automake autogen shtool libtool git wget cmake unzip build-essential g++ python-dev autotools-dev libicu-dev zlib1g-dev openssl libssl-dev libcurl4-openssl-dev libbz2-dev libcurl3 libpq-dev
wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz/download -Oboost_1_59_0.tar.gz 
# installing boost librbaries
 
tar xvf boost_1_59_0.tar.gz
cd boost_1_59_0
sudo ./bootstrap.sh --prefix=/usr/local
./b2 -j 8 threading=multi
sudo ./b2 install --prefix=/usr/local
cd..
 
# add symbolic links to some boost libs so we'll find our libraries in the run time
  
sudo ln -sf /usr/local/lib/libboost_system.so.1.59.0 /lib/x86_64-linux-gnu/libboost_system.so.1.59.0
sudo ln -sf /usr/local/lib/libboost_thread.so.1.59.0 /lib/x86_64-linux-gnu/libboost_thread.so.1.59.0
sudo ln -sf /usr/local/lib/libboost_log.so.1.59.0 /lib/x86_64-linux-gnu/libboost_log.so.1.59.0
sudo ln -sf /usr/local/lib/libboost_filesystem.so.1.59.0 /lib/x86_64-linux-gnu/libboost_filesystem.so.1.59.0 
 
# installing csi-kafka librbaries
  
git clone https://github.com/bitbouncer/csi-build-scripts.git
git clone https://github.com/bitbouncer/csi-kafka.git  
 
cd csi-kafka
bash -e ./build_linux.sh
cd csi_kafka/
 
# copy lib & includes to a well-known location
  
sudo mkdir /usr/include/csi_kafka
sudo mkdir /usr/include/csi_kafka/internal
sudo cp *.h /usr/include/csi_kafka
sudo cp internal/*.h /usr/include/csi_kafka/internal/
cd ..
sudo cp lib/libcsi-kafka.a /usr/local/lib/
sudo ln -sf /usr/local/lib/libcsi-kafka.a /lib/x86_64-linux-gnu/libcsi-kafka.a

#for QtCreator, add:
 
QMAKE_CXXFLAGS += -std=c++11 -DBOOST_LOG_DYN_LINK

LIBS += -lboost_system -lboost_thread -lboost_log -lcsi-kafka
Running some samples require zookepercli utility

wget https://github.com/outbrain/zookeepercli/releases/download/v1.0.10/zookeepercli_1.0.10_amd64.deb 
sudo dpkg -i zookeepercli_1.0.10_amd64.deb

Installing librdkafka library from the source:

mkdir librdkafka
git clone https://github.com/edenhill/librdkafka.git librdkafka/
cd librdkafka/
./configure
make
sudo make install

On my system the intsall was into
/usr/local/lib/

ubuntuVM:~/librdkafka/examples$ ls -l /usr/local/lib/librdkafka*
-rwxr-xr-x 1 root root 1958676 Nov  5 08:34 /usr/local/lib/librdkafka.a
-rwxr-xr-x 1 root root  875272 Nov  5 08:34 /usr/local/lib/librdkafka++.a
lrwxrwxrwx 1 root root      15 Nov  5 08:34 /usr/local/lib/librdkafka.so -> librdkafka.so.1
lrwxrwxrwx 1 root root      17 Nov  5 08:34 /usr/local/lib/librdkafka++.so -> librdkafka++.so.1
-rwxr-xr-x 1 root root  943720 Nov  5 08:34 /usr/local/lib/librdkafka.so.1
-rwxr-xr-x 1 root root  354163 Nov  5 08:34 /usr/local/lib/librdkafka++.so.1


Create symbolic links so the shared RDKAFKA libraries could be found in run time when the application starts:
  
sudo ln -sf /usr/local/lib/librdkafka++.so.1 /lib/x86_64-linux-gnu/librdkafka++.so.1

sudo ln -sf /usr/local/lib/librdkafka.so.1 /lib/x86_64-linux-gnu/librdkafka.so.1

The correct order of the RDKAFKA libraries if you use C++ is as follow (note that rdkafka++ is prior to rdkafka):

-lz -lpthread -lrt -lrdkafka++ -lrdkafka

So the LIBS for QtCreator now looks this way


LIBS += -lapr-1 -laprutil-1 -llog4cxx \
        -lz -lpthread -lrt -lrdkafka++ -lrdkafka

No comments: