当前位置: 首页 > news >正文

海思arm-hisiv400-linux-gcc 交叉编译rsyslog 记录心得

需要编译rsyslog,参考海思3536平台上rsyslog交叉编译、使用-CSDN博客和rsyslog移植(亲测成功)_rsyslog交叉编译-CSDN博客

首先下载了要用到的一些库的源码,先交叉编译这些库

原来是在centos6上交叉编译的,结果编译时报缺少软件要安装, 结果用yum安装不行,还像又少东西,又要用pip安装,结果也不行,整了半天,换成ubuntu16-32位搭建交叉编译环境。

先编译各个模块

注意libestr要求版本大于等于0.1.9,编译好各种库后,开始没有把各种编译好的东西放到

统一的地方,都是在各个模块的独自的安装目录下

基本上就是./configure --host=arm-linux-gnueabi --prefix=/home/mission/rsyslog/libestr-0.1.9/build CC=arm-hisiv400-linux-gcc 这样配置

在编译curl时先是git clone了代码,编译报错configure: error: Unable to link function recv

后百度了说是代码有问题用curl-7.47.0代码就没有问题,改用curl-7.47.0代码编译通过。

在配置rsyslog时,执行了

./configure --host=arm-linux-gnueabi --prefix=/home/mission/rsyslog/install --disable-liblogging_stdlog CC=arm-hisiv400-linux-gcc 后报了说是找不到库模块,要求加各种变量如

LIBESTR_CFLAGS,LIBESTR_LIBS等这些

./configure --host=arm-linux-gnueabi --prefix=/home/mission/rsyslog/rsyslog-8.1.6/build --disable-liblogging_stdlog CC=arm-hisiv400-linux-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,

//这里开始下面的问题,原来是可以避免的,只要设置正确即可,看文章最后的编译设置

后又出现编译时找到TRUE,FALSE的定义,后看了代码发现是1,0的宏,于是自己在config.h里手动加了宏定义

#define TRUE 1

#define FALSE 0

再后来出现编译undefined reference to `rpl_realloc'

百度了,说是config.h里定义了宏,认为没有malloc函数,于是用rpl_realloc替换,把头文件里的定义给注释了

再编译报expected identifier or '(' before '__extension__' extern char *strdup(__cons

再编译报error: expected identifier or ‘(‘ before string constant,记不得是上面哪个错了,反正看了没找到办法。就看别人的教程,换了个代码版本试试,之前的是git clone的,改用rsyslog-8.2406.0代码。

再编译说是找不到lexer.c文件,于是locate lexer.c定位了下,在别的版本的代码里就拷贝过来整个grammar目录

再编译说是我上面列的路径/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/lib是个目录,意思不是文件,

后来我看makefilej里感觉 这些变量指的是各自的库和头文件路径就换成了

./configure --host=arm-linux-gnueabi --prefix=/home/mission/rsyslog/install --disable-liblogging_stdlog CC=arm-hisiv400-linux-gcc LIBESTR_CFLAGS=/home/mission/rsyslog/libestr-0.1.9/build/include LIBESTR_LIBS=/home/mission/rsyslog/libestr-0.1.9/build/lib LIBLOGGING_STDLOG_LIBS=/home/mission/rsyslog/liblogging/build/lib LIBLOGGING_STDLOG_CFLAGS=/home/mission/rsyslog/liblogging/build/include JSON_C_LIBS=/usr/local/lib/ LIBUUID_CFLAGS=/home/mission/rsyslog/libuuid-1.0.3/build/include LIBUUID_LIBS=/home/mission/rsyslog/libuuid-1.0.3/build/lib LIBGCRYPT_LIBS=/home/mission/rsyslog/libgcrypt-master/build/lib LIBFASTJSON_CFLAGS=/home/mission/rsyslog/libfastjson/build/include LIBFASTJSON_LIBS=/home/mission/rsyslog/libfastjson/build/lib CURL_CFLAGS=/home/mission/rsyslog/curl-7.47.0/build/include CURL_LIBS=/home/mission/rsyslog/curl-7.47.0/build/lib ZLIB_LIBS=/home/mission/rsyslog/zlib-1.3.1 LDFLAGS="-L/home/mission/rsyslog/lib -lestr -lfastjson -lz"

再编译说是找不到各个库的链接实现 如找不到fjson_object_to_json_string,后又看上面的教程。

改进了配置,把各个模块的安装文件全放到一个目录里install,生成的库目录lib全统一放到rsyslog/lib下

./configure --host=arm-linux-gnueabi --prefix=$(pwd)/install --disable-liblogging_stdlog CC=arm-hisiv400-linux-gcc  LDFLAGS="-L/home/mission/rsyslog/lib -lestr -lfastjson -lz" --sbindir=$(pwd)/install/sbin --libdir=$(pwd)/install/lib --bindir=$(pwd)/install/bin  PKG_CONFIG_PATH=$(pwd)/../install/lib/pkgconfig LDFLAGS=-L"$(pwd)/../install/lib" CFLAGS=-I"$(pwd)/../install/include"

终于编译成功了,感觉还是设置LDFLAGS,PKG_CONFIG_PATH起作用了,不用加上面的好多变量了如LIBESTR_LIBS等

上面的报错顺序可能不对,记不清了,但不影响

//程序编译好了,结果测试能不能用时,发现,配置文件什么的得从别的系统上拷贝

还报错

最终又重新编译

最终设置

./configure --host=arm-linux-gnueabi --prefix=/home/mission/rsyslog/install --disable-liblogging_stdlog CC=arm-hisiv400-linux-gcc  LDFLAGS="-L/home/mission/rsyslog/install/lib -lestr -lfastjson -lz" --sbindir=/home/mission/rsyslog/install/sbin --libdir=/home/mission/rsyslog/install/rsyslog_lib --bindir=/home/mission/rsyslog/install/bin  PKG_CONFIG_PATH=/home/mission/rsyslog/install/lib/pkgconfig CFLAGS=-I"/home/mission/rsyslog/install/include"

直接make,make install 即可没有任何问题

又发现这个系统精简太多了,只有一个root用户,没有添加用户命令,这里应该是要有syslog用户的

所以最后无法使用

http://www.lryc.cn/news/403979.html

相关文章:

  • IDEA工具中Java语言写小工具遇到的问题
  • 2-38 基于matlab的蚁群算法优化无人机uav巡检
  • 解决selenium打印保存为PDF时图片未加载成功的问题
  • 如何将PDF转换成可以直接编辑的CAD图纸?
  • 【STM32】理解时钟树(图示分析)
  • 动态内存四个函数
  • DevExpress WPF中文教程 - 为项目添加GridControl并将其绑定到数据
  • 高性能分布式IO系统BL205 OPC UA耦合器
  • live555 rtsp服务器实战之doGetNextFrame
  • Nginx系列-3 servername优先级和location优先级和常用正则表达式
  • python—爬虫爬取电影页面实例
  • 实现图片拖拽和缩小放大功能。
  • 昇思25天学习打卡营第18天|munger85
  • nginx配置文件说明
  • 用不同的url头利用Python访问一个网站,把返回的东西保存为txt文件
  • 一文掌握Prometheus实现页面登录认证并集成grafana
  • 欢迎来到 Mint Expedition:Web3 和 NFT 的新时代开始
  • 针对环境构图的全局一致性扫描点云数据对齐(Graph SLAM)
  • Matlab学习笔记01 - 基本数据类型
  • 基于重要抽样的主动学习不平衡分类方法ALIS
  • Python爬虫(基本流程)
  • primeflex教学笔记20240720, FastAPI+Vue3+PrimeVue前后端分离开发
  • 移动设备安全革命:应对威胁与解决方案
  • 【C语言】 链表实现学生管理系统(堆区开辟空间)
  • STM32实战篇:按键(外部输入信号)触发中断
  • Android SurfaceView 组件介绍,挖洞原理详解
  • day2加餐 Go 接口型函数的使用场景
  • 摄像头 RN6752v1 视频采集卡
  • 记录vivado自带IP iBert眼图近端回环
  • js | Core