使用log4cplus记录日志的项目,想要在arm上运行,需要使用交叉编译工具进行编译后放到arm环境中,从环境搭建到在arm上运行步骤如下:
一、宿主机环境搭建
1、环境: Ubuntu 18.04.2
2、下载 logcplus后解压,本文使用的版本:log4cplus-2.0.7.tar.gz
tar zcvf log4cplus-2.0.7.tar.gz
3、 进入解压后的文件夹里 cd log4cplus-2.0.7
4、安装,依次执行下面命令
./configure --prefix=/opt/log4c --host=arm-linux-gnueabi CC=/opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc CXX=/opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++ --without-expat CFLAGS=-I/opt/log4c/include LDFLAGS=-L/opt/log4c/lib --enable-static --build=x86_64-linux-gnu
sudo make install
--prefix指明需要安装 否则将缺省安装到/usr/local目录下
--host 目标环境 是 arm-linx 设置指定软件运行的系统平台的交叉环境,
--host=arm-linux-gnueabi :编译出来的二进制程序所执行的主机
--build=x86_64-linux-gnu :执行代码编译的主机
--without-expat 不依赖expat解析器
--enable-static 指明了要生成静态库,可以不包含,这样就不会生成 .a 文件
-enable-threads 如果需要单线程版本可通过-enable-threads=no参数指定, 否则默认将安装多线程版本。
5、安装成功后,在/opt/log4c 目录下的有 lib(库文件) include (头文件)
二、编译LogTest.cpp:
1、宿主机设置自己的交叉编译工具 source /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/environment-setup-arm-linux-gnueabihf
2、写好的项目进行编译, 把 LogTest.cpp 拷贝到自己的目录 如log4目录,编译 LogTest.cpp
编译命令:
arm-linux-gnueabi-g++ -Wall -g -std=c++11 -I/opt/log4c/include -c LogTest.cpp -o LogTest.o
arm-linux-gnueabi-g++ LogTest.o -o logtest -Wall -llog4cplus -lpthread -L/opt/log4c/lib
三、arm运行:
1、编译好的logtest拷贝到arm环境中的文件夹里 如/opt/LOG_BIN
2、库文件liblog4cplus.so(软链接) 、liblog4cplus-2.0.so.3(软链接) liblog4cplus-2.0.so.3.4.6(本体)拷贝到arm环境中的文件夹里,如/opt/LOG_BIN/lib
3、设置环境变量 export LD_LIBRARY_PATH=/opt/LOG_BIN/lib 不设置运行时会找不到动态链接库的路径
4、运行程序 ./logtest