IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> Ubuntu 交叉编译ARM平台log4c -> 正文阅读

[嵌入式]Ubuntu 交叉编译ARM平台log4c

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"/> #在log4crc最后一行中加入
$ 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环境下,一下为执行结果:
在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 23:07:51  更:2021-07-14 23:08:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:48:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码