交叉编译avahi到aarch64平台

谢绝转载

一、背景

         准备学习无中心网络组网,研究如何实现无中心网络IP分配

二、环境搭建过程

找到的有参考价值的网页:

https://zhuanlan.zhihu.com/p/60892150322

gcc_7.5.sh

#! /bin/sh

export PATH=/home/ws/chain_tools/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$PATH
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-

2.1 expat-2.6.4 交叉编译

编译包下载路径:

https://sourceforge.net/projects/expat/files/expat/2.6.4/expat-2.6.4.tar.xz/download

#! /bin/bash
cd ./expat-2.6.4/

source ~/env/gcc_7.5.sh

./configure --host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ --prefix=$(pwd)/../expat_install --enable-shared --enable-static

make -j20
make install

# /home/ws/github/avahi/expat_install/bin
# /home/ws/github/avahi/expat_install/include
# /home/ws/github/avahi/expat_install/lib
# /home/ws/github/avahi/expat_install/share

2.2 libdaemon-0.14 交叉编译

编译包下载路径:https://0pointer.de/lennart/projects/libdaemon/#download

export CC=aarch64-linux-gnu-gcc
export CXX=aarch64-linux-gnu-g++
./configure  --host=aarch64-linux-gnu --prefix=$(pwd)/../libdaemon_install  --config-cache
#--enable-shared --enable-static
make -j20
make install

# /home/ws/github/avahi/libdaemon_install/include
# /home/ws/github/avahi/libdaemon_install/lib
# /home/ws/github/avahi/libdaemon_install/share

遇到编译过错中报错不识别aarch64平台的问题,解决方式如下:

wget -O ./config.sub "https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD"
wget -O ./config.guess "https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD"
chmod +x config.guess config.sub

echo "ac_cv_func_setpgrp_void=yes" > config.cache

# 在编译参数中增加 --config-cache
# ./configure --host=aarch64-linux-gnu --prefix=$(pwd)/build-aarch64 --config-cache

2.3 dbus-1.3.0 交叉编译

源码下载路径:Index of /releases/dbus

#! /bin/bash
cd ./dbus-1.3.0/

source ~/env/gcc_7.5.sh


# export CC=aarch64-linux-gnu-gcc
# export CXX=aarch64-linux-gnu-g++
./configure --prefix=$(pwd)/../dbus1.3.0_install --enable-tests=no --host=aarch64-linux-gnu --disable-selinux CFLAGS="-I/home/ws/github/avahi/expat_install/include" LDFLAGS="-L/home/ws/github/avahi/expat_install/lib"

#--enable-shared --enable-static
make -j20
make install

2.4 avahi交叉编译

源码下载路径,注意要切换tag到v0.8分支:GitHub - avahi/avahi at v0.8

#! /bin/bash
cd ./avahi/

# sudo apt-get install autoconf automake libtool
# sudo apt install gettext
# sudo apt-get install libdbus-1-dev
# sudo apt-get install libglib2.0-dev
# sudo apt-get install libexpat1-dev

source ~/env/gcc_7.5.sh

./autogen.sh

# 设置环境变量
export CPPFLAGS="-I/home/ws/github/avahi/expat_install/include -I/home/ws/github/avahi/dbus1.3.0_install/include/dbus-1.0/dbus"
export CFLAGS="-I/home/ws/github/avahi/expat_install/include -I/home/ws/github/avahi/dbus1.3.0_install/include/dbus-1.0/dbus"
export LDFLAGS="-L/home/ws/github/avahi/expat_install/lib -L/home/ws/github/avahi/dbus1.3.0_install/lib -Wl,-rpath-link,/home/ws/github/avahi/dbus1.3.0_install/lib -Wl,-rpath,/home/ws/github/avahi/dbus1.3.0_install/lib"
export LIBS="-ldbus-1 -lpthread -lrt"
export PKG_CONFIG_PATH="/home/ws/github/avahi/dbus1.3.0_install/lib/pkgconfig"
export PKG_CONFIG_LIBDIR="/home/ws/github/avahi/dbus1.3.0_install/lib"

# 配置 Avahi
./configure --host=aarch64-linux-gnu \
    --prefix=$(pwd)/build-aarch64 \
    --with-distro=archlinux \
    --localstatedir=$(pwd)/log \
    --with-xml=none \
    --with-avahi-user=root \
    --with-avahi-group=root \
    --disable-qt3 --disable-qt4 --disable-qt5  --disable-gtk --disable-gtk3 --disable-python --disable-mono --disable-pygobject \
    --disable-doxygen  --disable-manpages  --disable-libevent --disable-FEATURE --disable-glib --disable-gobject \
    --disable-daemon --disable-dnsconfd --disable-utils --disable-gdbm \
    --enable-autoipd \
    DBUS_CFLAGS="-I/home/ws/github/avahi/dbus1.3.0_install/include/dbus-1.0 -I/home/ws/github/avahi/dbus1.3.0_install/lib/dbus-1.0/include" \
    DBUS_LIBS="-L/home/ws/github/avahi/dbus1.3.0_install/lib -ldbus-1 -lpthread -lrt -Wl,-rpath-link,/home/ws/github/avahi/dbus1.3.0_install/lib -Wl,-rpath,/home/ws/github/avahi/dbus1.3.0_install/lib" \
    LIBDAEMON_CFLAGS="-I/home/ws/github/avahi/libdaemon_install/include" \
    LIBDAEMON_LIBS="-L/home/ws/github/avahi/libdaemon_install/lib -ldaemon"

# 编译和安装
make -j20
make install

# 源码下载地址: https://github.com/avahi/avahi/tree/v0.8

一定要设置链接器参数,否则报错:

make[1]: Entering directory '/home/ws/github/avahi/avahi/avahi-utils'
  CCLD     avahi-browse
/home/ws/chain_tools/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.5.0/../../../../aarch64-linux-gnu/bin/ld: warning: libdbus-1.so.3, needed by ../avahi-client/.libs/libavahi-client.so, not found (try using -rpath or -rpath-link)
../avahi-client/.libs/libavahi-client.so: undefined reference to `dbus_message_get_member'
../avahi-client/.libs/libavahi-client.so: undefined reference to `dbus_connection_set_timeout_functions'
../avahi-client/.libs/libavahi-client.so: undefined reference to `dbus_connection_set_exit_on_disconnect'

三、编译输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/954466.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springMVC实现文件上传

目录 一、创建项目 二、引入依赖 三、web.xml 四、编写上传文件的jsp页面 五、spring-mvc.xml 六、controller 七、运行 一、创建项目 二、引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.o…

6.1 MySQL数字函数和条件函数

以前我们在课程中使用过一些mysql的内置函数&#xff0c;比如说四舍五入的round函数&#xff0c;做日期计算的data, datediff函数等等。那么本次课程咱们就来系统的学习一下mysql的这些内置函数&#xff0c;我们使用编程语言写程序的时候&#xff0c;通常会把某一项业务功能封装…

设计模式03:行为型设计模式之策略模式的使用情景及其基础Demo

1.策略模式 好处&#xff1a;动态切换算法或行为场景&#xff1a;实现同一功能用到不同的算法时和简单工厂对比&#xff1a;简单工厂是通过参数创建对象&#xff0c;调用同一个方法&#xff08;实现细节不同&#xff09;&#xff1b;策略模式是上下文切换对象&#xff0c;调用…

网安——CSS

一、CSS基础概念 CSS有两个重要的概念&#xff0c;分为样式和布局 CSS的样式分为两种&#xff0c;一种是文字的样式&#xff0c;一种是盒模型的样式 CSS的另一个重要的特质就是辅助页面布局&#xff0c;完成HTML不能完成的功能&#xff0c;比如并排显示或精确定位显示 从HT…

Pytorch基础教程:从零实现手写数字分类

文章目录 1.Pytorch简介2.理解tensor2.1 一维矩阵2.2 二维矩阵2.3 三维矩阵 3.创建tensor3.1 你可以直接从一个Python列表或NumPy数组创建一个tensor&#xff1a;3.2 创建特定形状的tensor3.3 创建三维tensor3.4 使用随机数填充tensor3.5 指定tensor的数据类型 4.tensor基本运算…

git操作(bitbucket仓库)

在代码远程版本控制和提交过程中需要经常使用git命令&#xff0c;熟练使用git是一个软件工程师必备的技能之一。 将主版本代码fork到自己的 bitbucket 子仓库中 克隆到本地 利用ssh链接进行克隆&#xff0c;将 fork 的子仓库克隆到本地。 git clone ssh://{$你fork的子bitbu…

【AIGC】SYNCAMMASTER:多视角多像机的视频生成

标题&#xff1a;SYNCAMMASTER: SYNCHRONIZING MULTI-CAMERA VIDEO GENERATION FROM DIVERSE VIEWPOINTS 主页&#xff1a;https://jianhongbai.github.io/SynCamMaster/ 代码&#xff1a;https://github.com/KwaiVGI/SynCamMaster 文章目录 摘要一、引言二、使用步骤2.1 TextT…

登录系统网址作业

目录 主页代码 主页​编辑 效果1 登录页面代码 登录页面 效果2 注册页面代码 注册页面 效果3 主页代码 <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content&qu…

[Do374]Ansible一键搭建sftp实现用户批量增删

[Do374]Ansible一键搭建sftp实现用户批量增删 1. 前言2. 思路3. sftp搭建及用户批量新增3.1 配置文件内容3.2 执行测试3.3 登录测试3.4 确认sftp服务器配置文件 4. 测试删除用户 1. 前言 最近准备搞一下RHCA LV V,外加2.9之后的ansible有较大变化于是练习下Do374的课程内容. 工…

00_专栏《Redis 7.x企业级开发实战教程》介绍

大家好,我是袁庭新。Redis作为一款高性能、多用途的内存数据库,凭借其丰富的数据结构、高速读写能力、原子操作特性及发布订阅等功能,在缓存加速、分布式锁、消息队列等场景中不可或缺,极大提升了系统性能与开发效率,是现代互联网应用架构的关键组件。 你是否在学习Redis…

wow-agent 学习笔记

wow-agent-课程详情 | Datawhale 前两课比较基础&#xff0c;无笔记 第三课 阅卷智能体这一块&#xff0c;曾经做过一点和AI助教相关的内容&#xff0c;也是用了一个prompt去进行CoT&#xff0c;但是风格和课程中的不太相同&#xff0c;在下面附上我的prompt 你是一名资深教…

如何优化Elasticsearch大文档查询?

记录一次业务复杂场景下DSL优化的过程 背景 B端商城业务有一个场景就是客户可见的产品列表是需要N多闸口及各种其它逻辑组合过滤的&#xff0c;各种闸口数据及产品数据都是存储在ES的(有的是独立索引&#xff0c;有的是作为产品属性存储在产品文档上)。 在实际使用的过程中&a…

idea分支合并代码

步骤一 首先把两个分支的代码都提交了&#xff0c;保持和远程仓库一致&#xff0c;不要有任何没提交的代码。如果一些程序的yml配置文件&#xff0c;不想提交&#xff0c;可以复制一个&#xff0c;不受git管理。如果有没有提交的代码&#xff0c;合并分支的时候就会提示那些代…

EasyLine(v2.0)自制光谱、曲线处理软件

前言&#xff1a;因为这次更新对软件的整体变动较大&#xff0c;所以就没有取版本v1.1&#xff0c;而是直接使用v2.0版本。然后上一版的讲解也不是很清楚&#xff0c;这次也做重点讲解一下。 自制光谱、曲线处理软件-EasyLine 软件的安装软件的使用总体介绍文件格式处理的使用 …

使用JMeter模拟多IP发送请求!

你是否曾遇到过这样的场景&#xff1a;使用 JMeter 进行压力测试时&#xff0c;单一 IP 被服务器限流或者屏蔽&#xff1f;这时&#xff0c;如何让 JMeter 模拟多个 IP 发送请求&#xff0c;成功突破测试限制&#xff0c;成为测试工程师必须攻克的难题。今天&#xff0c;我们就…

python如何设计矩阵

python设计矩阵&#xff1a; 1、调用numpy模块创建矩阵并设置矩阵的行跟列 import numpy matrix numpy.array([[1,2,3],[4,5,6],[7,8,9]])#创建矩阵 2、通过下标的办法输出二维列表中的一维列表&#xff0c;达到输出矩阵的效果 vector numpy.array([[1,2,3],[4,5,6],[7,8,9]…

量子计算:从薛定谔的猫到你的生活

文章背景 说到量子计算&#xff0c;不少人觉得它神秘又遥不可及。其实&#xff0c;它只是量子物理学的一个“应用小分支”。它的核心在于量子比特的“叠加”和“纠缠”&#xff0c;这些听上去像科幻小说的概念&#xff0c;却为计算世界开辟了一片全新的天地。如果经典计算是“…

python 轮廓 获取环形区域

目录 效果图&#xff1a; 代码&#xff1a; 效果图&#xff1a; 代码&#xff1a; import cv2 import numpy as np# 读取图像 image cv2.imread(rE:\project\jijia\tools_jijia\img_tools\ground_mask.jpg, cv2.IMREAD_GRAYSCALE) # 二值化图像 # 二值化图像 _, binary cv…

Python | 使用Matplotlib进行图案填充和边缘颜色分离的三种方法

Matplotlib是Python中功能强大的绘图库&#xff0c;允许广泛的自定义选项。一个常见的要求是分离出图中的图案填充和边缘颜色。默认情况下&#xff0c;Matplotlib中的填充颜色与边缘颜色相关联&#xff0c;但有一些方法可以独立自定义这些颜色。本文将深入研究如何实现这一点的…

OpenStack 网络服务的插件架构

OpenStack 的网络服务具有灵活的插件架构&#xff0c;可支持多种不同类型的插件以满足不同的网络需求。以下是对 OpenStack 网络服务插件架构中一些常见插件类型的介绍&#xff1a; 一、SDN 插件 Neutron 与 SDN 的集成&#xff1a;在 OpenStack 网络服务里&#xff0c;SDN 插…