1、概述:
移植rsyslog需要很多依赖库,只编译rsyslog之前先得把这些依赖库编译OK。
为了交叉编译的方便,可以把所以依赖库编译出来的库文件和头文件拷贝到交叉编译工具对应的目录下。
2、依赖库:
依赖库列表:
libestr
libfastjson
json
liblogging-stdlog
libgcrypt
3、编译
3.1 libestr
下载:wget http://libestr.adiscon.com/files/download/libestr-0.1.9.tar.gz
要求版本大于等于0.1.9
tar xvf libestr-0.1.9.tar.gz && cd libestr-0.1.9
./configure --prefix=安装目录 --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc
make && make install
3.2 libfastjson
git clone https://github.com/rsyslog/libfastjson.git
cd libfastjson
sh autogen.sh
./configure --prefix=安装目录 --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc
make && make install
3.3 json
wget https://github.com/downloads/json-c/json-c/json-c-0.10.tar.gz
tar xvf json-c-0.10.tar.gz
cd json-c-0.10
./configure --prefix=安装目录 --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc
make && make install
问题:在编译json时,可能会出现 undefined reference to rpl_malloc的错误,此时把config.h.in文件中#undef malloc定义注释掉便可。
3.4 liblogging-stdlog
git clone https://github.com/rsyslog/liblogging.git
cd liblogging
autoreconf -fvi
./configure --prefix=编译路径 --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc
make && make install
3.5 libgcrypt
wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.5.2.tar.gz // 1.7.6版本没有编译成功
tar -xvf libgcrypt-1.5.2.tar.gz
cd libgcrypt-1.5.2
./configure --disable-nls --disable-asm --prefix=编译路径 --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc
make && make install
3.6 拷贝
把以上编译出来的库和头文件,以及.pc文件拷贝到交叉编译工具对应目录中。
注意拷贝json的头文件时,编译处理的头文件是包括在json的目录下的,要把json目录下的文件头的工具include中,而不是考目录过去。
3.7 rsyslog
编译rsyslog加参数 --disable-liblogging_stdlog
因为尝试安装liblogging-stdlog后,编译时仍报错“No package 'liblogging-stdlog' found”,因此在编译时选择加参数--disable-liblogging_stdlog
tar -xvf rsyslog-8.1.6.tar.gz
cd rsyslog-8.1.6
./configure --host=arm-linux-gnueabihf --prefix=/home/sampson/third_libs/rsyslog-8.1.6/build --disable-liblogging_stdlog CC=arm-linux-gnueabihf-gcc LIBESTR_CFLAGS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/include LIBESTR_LIBS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/lib LIBLOGGING_STDLOG_CFLAGS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/include LIBLOGGING_STDLOG_LIBS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/lib JSON_C_CFLAGS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/include JSON_C_LIBS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/lib LIBUUID_CFLAGS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/include LIBUUID_LIBS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/lib LIBGCRYPT_LIBS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/lib
make && make install
问题:
配置过程中出现过寻找本地目录下的libestr的库,提示格式不对,不知道为什么不找交叉编译中的对应库,为了速度我使用了粗暴的方法,直接把本地的库移动其他地方,再配置则不再提示这个错误。