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

vcpkg交叉编译qt等过程记录(未完成)

        本文用于实验如何通过vcpkg在x64 linux下面交叉编译arm64和loongarch64目标的qt5等开发库。

一、交叉编译工具准备

1.arm64

wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz

2.loongarch64

wget https://ftp.loongnix.cn/toolchain/gcc/release/loongarch/gcc8/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.6.tar.xz

二、目标机器sysroot准备

        先配置sudo可以免密只需rsync,在arm64机器和龙芯机器里面分别执行:

which rsync #查看rsync在哪,一般情况下输出/usr/bin/rsyncsudo visudo添加下面的内容(需要将user换成目标计算机的真实用户名):
user ALL=(ALL) NOPASSWD: /usr/bin/rsync保存退出sudo -k  # 清除缓存
sudo rsync --version  # 应无需输入密码直接运行

    在交叉编译的机器上面安装symlinks备用:

    sudo apt install symlinks 

1.arm64

  编辑脚本create_sysroot_arm64.sh

#!/bin/bash
# 文件名:create_sysroot_arm64.shSYSROOT=~/sysroot/arm64
SSH_PORT=6000
REMOTE_USER=user
REMOTE_HOST=127.0.0.1# SSH控制连接设置
SSH_CONTROL_PATH="/tmp/ssh-control-%h-%p-%r"
SSH_OPTIONS="-o ControlMaster=auto -o ControlPath=$SSH_CONTROL_PATH -o ControlPersist=10m"# 建立主连接
echo "建立SSH连接(只需输入一次密码)..."
ssh -M -f -N -p $SSH_PORT $SSH_OPTIONS $REMOTE_USER@$REMOTE_HOST# 确保脚本退出时关闭主连接
trap "ssh -O exit -p $SSH_PORT $SSH_OPTIONS $REMOTE_USER@$REMOTE_HOST 2>/dev/null" EXIT# 创建sysroot
mkdir -p $SYSROOT# 函数:安全复制目录
copy_directory() {local src=$1local dst=$2echo "正在复制 $src ..."# 先检查远程路径是否存在if ssh -p $SSH_PORT $SSH_OPTIONS $REMOTE_USER@$REMOTE_HOST "test -e $src"; then# 如果是符号链接,获取真实路径real_path=$(ssh -p $SSH_PORT $SSH_OPTIONS $REMOTE_USER@$REMOTE_HOST "readlink -f $src" 2>/dev/null || echo $src)echo "  实际路径: $real_path"# 创建本地目标目录mkdir -p $(dirname $dst)# 复制内容rsync -avz -e "ssh -p $SSH_PORT $SSH_OPTIONS" \--rsync-path="sudo rsync" \$REMOTE_USER@$REMOTE_HOST:$real_path/ \$dst/elseecho "  $src 不存在,跳过"fi
}# 复制必要的目录
copy_directory "/usr/lib" "$SYSROOT/usr/lib"
copy_directory "/usr/include" "$SYSROOT/usr/include"# 检查是否有lib64
if ssh -p $SSH_PORT $SSH_OPTIONS $REMOTE_USER@$REMOTE_HOST "test -d /usr/lib64"; thencopy_directory "/usr/lib64" "$SYSROOT/usr/lib64"
fi# 创建标准的符号链接结构
cd $SYSROOT
ln -sf usr/lib lib
test -d usr/lib64 && ln -sf usr/lib64 lib64# 复制一些额外的重要文件
echo "复制ld.so.conf..."
rsync -avz -e "ssh -p $SSH_PORT $SSH_OPTIONS" \--rsync-path="sudo rsync" \$REMOTE_USER@$REMOTE_HOST:/etc/ld.so.* \$SYSROOT/etc/ 2>/dev/null || trueecho "=== 完成!==="
echo "检查结果:"
ls -la $SYSROOT/
ls -la $SYSROOT/usr/lib/*.so* | head -5

 修改以上脚本里面的ssh目标机器IP地址,端口,用户名等为你真实的arm64机器的信息,然后bash create_sysroot_arm64.sh 执行并等待复制文件完成。

 复制文件完成以后将路径改为相对路径

# 将绝对路径转换为相对路径
symlinks -rc ~/sysroot/arm64

2.龙芯

     复制一份上面的.sh文件,修改里面的~/sysroot/arm64为~/sysroot/loongarch64,修改SSH相关信息后同样bash xxxx.sh 执行。

http://www.xdnf.cn/news/1089919.html

相关文章:

  • 华为动态路由配置
  • Git基本操作1
  • git 报错fatal: refusing to merge unrelated histories
  • 城市地质大数据平台:透视地下空间,赋能智慧未来
  • 基于物联网的智能家居控制系统设计与实现
  • 从零开始的云计算生活——番外2,MySQL组复制
  • 项目进度管控缺乏闭环,如何形成反馈机制
  • 适老化HMI改造:老年用户界面的字体、触控区域优化策略
  • 想要抢早期筹码?FourMeme专区批量交易教学
  • Kubernetes 存储入门
  • Spring Boot + Vue.js 全栈开发:从前后端分离到高效部署,打造你的MVP利器!
  • NLP自然语言处理04 transformer架构模拟实现
  • 【Java SE】Arrays工具类
  • OpenCV哈希算法------Marr-Hildreth 边缘检测哈希算法
  • 字符串大小比较的方式|函数的多返回值
  • Softhub软件下载站实战开发(十六):仪表盘前端设计与实现
  • 【DOCKER】-2 docker基础
  • 车载以太网-TC8测试-UT(Upper Tester)
  • 基于物联网的智能交通灯控制系统设计
  • RAGflow图像解析与向量化分析
  • 基于模板设计模式开发优惠券推送功能以及对过期优惠卷进行定时清理
  • 文献学习|全面绘制和建模水稻调控组景观揭示了复杂性状背后的调控架构。
  • 【洛谷题单】--顺序结构(一)
  • MyBatis-Plus:深入探索与最佳实践
  • 《UE5_C++多人TPS完整教程》学习笔记42 ——《P43 瞄准(Aiming)》
  • 【Linux服务器】-安装ftp与sftp服务
  • JavaScript基础篇——第二章 类型转换与常见错误解析
  • openEuler2203sp4-vg磁盘组中剔除磁盘
  • 11款常用C++在线编译与运行平台推荐与对比
  • 【PyTorch】PyTorch中torch.nn模块的激活函数