Ubuntu 交叉编译ARM平台log4c
参考原文链接:https://blog.csdn.net/cfl927096306/article/details/90670332u
宿主机环境: Linux ubuntu 3.19.0-80-generic #88~14.04.1-Ubuntu SMP Fri Jan 13 14:54:07 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux ARM平台交叉编译工具链: arm-linux-gnueabihf-gcc
在ARM平台下,如果是log4c的话,要依赖expat去解析xml配置文件
1.下载expat 2.0.1源码 expat-2.0.1-RENAMED-VULNERABLE-PLEASE-USE-2.3.0-INSTEAD.tar.gz · expat 2.0.1.tar.gz
2.编译安装expat 2.0.1
$ cd ~
$ tar -zxvf expat-2.0.1-RENAMED-VULNERABLE-PLEASE-USE-2.3.0-INSTEAD.tar.gz
$ cd expat-2.0.1/
$ mkdir build
$ cd build
$ ../configure CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf --prefix=/usr/local/expat
$ make
$ sudo make install
在sudo make insall时,提示“arm-linux-gnueabihf-ranlib: command not found” 由于安装到系统目录/usr/local,所以加了sudo执行。就这步,出现了问题: ./libtool: line 6556: arm-linux-gnueabihf-ranlib: command not found 在终端检查,发现arm-linux-ranlib可以在系统的PATH中找到,因为我已经把/usr/local/gcc-linaro-arm-linux-gnueabihf-4.7-linux/bin:添加到了PATH中。那为什么还提示说找不到arm-linux-gnueabihf-ranlib呢?
原因如下: 1.我添加arm交叉编译器目录到PATH中是放在~/.bash_profile里的,这是用户的配置文件,我的用户为XXX 2.执行make install时,加了sudo前缀,变成了root的工作环境和root的权限。 根据以上两点,make install是在root下做的,而arm-linux-gnueabihf-ranlib在XXX用户的工作环境中才能找到。所以产生了这里的错误。那我既要取得root权限,又要具有当前用户XXX的工作环境,改怎办呢?
解决如下: 执行make install之前,先用下su命令取得root权限。然后再执行make install。 su 和 sudo 的区别: 1.共同点:都是root用户的权限; 2.不同点:su仅仅取得root权限,工作环境不变,还是在切换之前用户的工作环境;sudo是完全取得root的权限和root的工作环境。
应用文章:https://blog.csdn.net/rocispeng/article/details/8256168
3.下载log4c 1.2.4源码 log4c-1.2.4.tar.gz · log4c-1.2.4.tar.gz
4.编译安装log4c 1.2.4
$ cd ~
$ tar -zxvf log4c-1.2.4.tar.gz
$ cd log4c-1.2.4/
$ mkdir build
$ cd build
$ ./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf --with-pxpat-prefix=/usr/
/local/expat/ --prefix=/usr/local/log4c
$ make
$ sudo make install
5.编译helloworld,进行验证
$ cd ~/log4c-1.2.4/examples/helloworld
$ cp ~/log4c-1.2.4/examples/log4crc ~/log4c-1.2.4/examples/helloworld/log4crc
$ <category name="log4c.examples.helloworld" priority="debug" appender="stdout"/>
$ arm-linux-gnueabihf-gcc -o helloworld helloworld.c -I /usr/loacl/log4c/include -L /usr/local/expat/lib -lexpat -L /usr/local/log4c/lib
将生成的helloword可执行文件拷贝到ARM环境下,并将文件libexpat.so(/usr/local/expat/lib)、liblog4c.so(/usr/local/log4c/lib)、log4crc,一并拷贝到ARM环境下,一下为执行结果:
|