当前位置: 首页 > 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.dtcms.com/a/270733.html

相关文章:

  • HarmonyOS应用开发者高级试题2025年7月部分单选题(带答案)
  • 学习日记-spring-day44-7.9
  • C++随机打乱函数:简化源码与原理深度剖析
  • leetcode11.盛最多水的容器
  • Webpack、Vite配置技巧与CI/CD流程搭建全解析
  • 【RTSP从零实践】9、多播传输AAC格式的RTP包(附带源码)
  • mac m1安装大模型工具vllm
  • kotlin学习,val使用get()的问题
  • mysql 安装实战
  • Claude Code 开发使用技巧
  • User手机上如何抓取界面的布局uiautomatorviewer
  • Linux的`if test`和`if [ ]中括号`的取反语法比较 笔记250709
  • Unity Demo-3DFarm详解-其二
  • 以太坊智能合约核心技术解析与应用实践
  • LLaMA-Omni 深度解析:打开通往无缝人机语音交互的大门
  • HCIP 认证可以做什么?如何选择合适的职业路径?
  • C++11 future、promise实现原理
  • AI生成交互式数据图表
  • 【c++八股文】Day5:const和constexpr,define
  • sql查询davinci看板数据
  • 【一起来学AI大模型】PyTorch DataLoader 实战指南
  • 极简相册管理ios app Tech Support
  • ARM汇编编程(AArch64架构)课程 - 第7章:SIMD与浮点运算
  • 2025杰理蓝牙芯片:各系列芯片特点及市场分析
  • 【手写 new 操作符实现 - 深入理解 JavaScript 对象创建机制】
  • 【Linux】权限的概念及理解
  • VR/AR在HMI中的创新应用:远程协作与维修的沉浸式体验
  • 类和对象拓展——日期类
  • 【实习篇】之Http头部字段之Disposition介绍
  • 使用 Docker 搭建 Rust Web 应用开发环境——AI教你学Docker