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

用liferay做的网站如何做响应式布局网站

用liferay做的网站,如何做响应式布局网站,电商网站卷烟订货流程,ico加网站一、引言 在现代软件开发中,交叉编译是构建跨平台应用程序的关键技术。本文将详细介绍如何使用Docker容器和vcpkg包管理器为Arm64架构交叉编译gRPC库。这种方法特别适用于需要在x86开发机上为ARM服务器或嵌入式设备构建高性能RPC服务的场景。 二、配置Docker交叉编…

一、引言

在现代软件开发中,交叉编译是构建跨平台应用程序的关键技术。本文将详细介绍如何使用Docker容器和vcpkg包管理器为Arm64架构交叉编译gRPC库。这种方法特别适用于需要在x86开发机上为ARM服务器或嵌入式设备构建高性能RPC服务的场景。

二、配置Docker交叉编译环境

2.1、基础环境工具安装

(1)环境准备

我们首先基于Ubuntu 22.04创建一个Docker镜像,其中包含了所有必要的工具链和依赖项:

FROM ubuntu:22.04# 修改源为国内镜像加速下载
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list# 设置非交互模式避免安装过程中的提示
ENV DEBIAN_FRONTEND=noninteractive

(2)基础工具安装

安装编译和开发所需的基础工具:

RUN apt-get update && \apt-get install -y sudo pkg-config git vim wget curl tar zip unzip bzip2 \net-tools gcc g++ gdb make ninja-build rsync cmake

2.2、配置交叉编译工具链

(1)安装Arm64交叉编译工具链

我们使用Bootlin提供的预编译工具链。注意目标环境的glibc版本,glibc版本可以通过ldd --version查看。

RUN cd /tmp && \wget "https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--glibc--stable-2020.08-1.tar.bz2" && \mkdir -p /opt/toolchain && \tar -jxvf /tmp/aarch64--glibc--stable-2020.08-1.tar.bz2 -C /opt/toolchain && \rm /tmp/aarch64--glibc--stable-2020.08-1.tar.bz2# 设置工具链环境变量
ENV TOOLCHAIN_PATH="/opt/toolchain/aarch64--glibc--stable-2020.08-1/bin"
ENV PATH="${TOOLCHAIN_PATH}:${PATH}"# 验证工具链
RUN aarch64-linux-gcc --version

(2)创建CMake工具链文件

为了让CMake正确识别交叉编译环境,我们需要创建交叉编译工具链文件aarch64-toolchain.cmake

RUN echo 'set(CMAKE_SYSTEM_NAME Linux)' > /opt/aarch64-toolchain.cmake && \echo 'set(CMAKE_SYSTEM_PROCESSOR aarch64)' >> /opt/aarch64-toolchain.cmake && \echo 'set(CMAKE_CROSSCOMPILING ON)' >> /opt/aarch64-toolchain.cmake && \echo 'set(CMAKE_C_COMPILER "/opt/toolchain/aarch64--glibc--stable-2020.08-1/bin/aarch64-linux-gcc")' >> /opt/aarch64-toolchain.cmake && \echo 'set(CMAKE_CXX_COMPILER "/opt/toolchain/aarch64--glibc--stable-2020.08-1/bin/aarch64-linux-g++")' >> /opt/aarch64-toolchain.cmake && \echo 'set(CMAKE_SYSROOT "/opt/toolchain/aarch64--glibc--stable-2020.08-1/aarch64-buildroot-linux-gnu/sysroot")' >> /opt/aarch64-toolchain.cmake && \echo 'set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)' >> /opt/aarch64-toolchain.cmake && \echo 'set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)' >> /opt/aarch64-toolchain.cmake && \echo 'set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)' >> /opt/aarch64-toolchain.cmake && \echo 'set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)' >> /opt/aarch64-toolchain.cmake

2.3、配置vcpkg

(1)安装vcpkg

vcpkg是微软开发的C++包管理器,可以简化依赖管理:

# 克隆并初始化vcpkg
RUN git clone https://github.com/microsoft/vcpkg /opt/vcpkg && \/opt/vcpkg/bootstrap-vcpkg.sh

(2)配置vcpkg的Arm64 triplet文件

我们需要为vcpkg创建自定义的triplet文件triplets/aarch64-linux.cmake来支持Arm64交叉编译:

RUN echo 'set(VCPKG_TARGET_ARCHITECTURE arm64)' >> /opt/vcpkg/triplets/aarch64-linux.cmake && \echo 'set(VCPKG_CRT_LINKAGE dynamic)' >> /opt/vcpkg/triplets/aarch64-linux.cmake && \echo 'set(VCPKG_LIBRARY_LINKAGE static)' >> /opt/vcpkg/triplets/aarch64-linux.cmake && \echo 'set(VCPKG_CMAKE_SYSTEM_NAME Linux)' >> /opt/vcpkg/triplets/aarch64-linux.cmake && \echo 'set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "/opt/aarch64-toolchain.cmake")' >> /opt/vcpkg/triplets/aarch64-linux.cmake

2.4、安装gRPC

使用vcpkg安装ARM64版本的gRPC库:

RUN /opt/vcpkg/vcpkg install grpc:aarch64-linux --host-triplet=x64-linux

2.5、配置SSH服务(可选)

为了方便开发,我们可以配置SSH服务:

RUN apt-get update && \apt-get install -y openssh-server && \mkdir /var/run/sshd && \sed -ri 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config && \sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config && \echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config && \echo 'root:123' | chpasswd

三、构建和运行容器

完成Dockerfile编写后,可以使用以下命令构建和运行容器:

sudo docker build --network=host -f Dockerfile -t cross-dev:1.0.0 .
sudo docker run --restart=always -p 22001:22 -v ~/works:/root -d cross-dev:1.0.0

四、构建grpc应用程序

  1. CMakeLists.txt中包含交叉编译工具链。
cmake_minimum_required(VERSION 3.18)
project(arm_demo)# 包含交叉编译工具链
include(/opt/aarch64-toolchain.cmake)find_package(gRPC CONFIG REQUIRED)
add_executable(arm_demo main.cpp)
target_link_libraries(${target_name} PRIVATE gRPC::grpc gRPC::grpc++)
  1. CMakePresets.json文件的cacheVariables中配置vcpkg工具链:
{"version": 4,"cmakeMinimumRequired": {"major": 3,"minor": 19,"patch": 0},"configurePresets": [{"name": "linux-x64-base","hidden": true,"description": "面向适用于 Linux 的远程 Linux 系统。","generator": "Ninja","binaryDir": "${sourceDir}/out/build/${presetName}","architecture": {"value": "x64","strategy": "external"},"cacheVariables": {"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"},"vendor": {"microsoft.com/VisualStudioSettings/CMake/1.0": { "hostOS": [ "Linux" ] },"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "sourceDir": "$env{HOME}/$ms{projectDirName}" }}},{"name": "aarch64-Release","inherits": "linux-x64-base","cacheVariables": {"CMAKE_BUILD_TYPE": "Release","VCPKG_TARGET_TRIPLET": "aarch64-linux","CMAKE_TOOLCHAIN_FILE": "/opt/vcpkg/scripts/buildsystems/vcpkg.cmake"}}]
}

五、总结

通过本文介绍的方法,我们成功创建了一个包含完整ARM64交叉编译环境的Docker容器,并使用vcpkg安装了gRPC库。这种方法具有以下优势:

  1. 环境隔离​​:Docker容器提供了干净、一致的开发环境;
  2. 可重复性​​:Dockerfile确保每次构建都能得到相同的结果;
  3. 跨平台​​:可以在任何支持Docker的主机上为ARM64架构构建应用;
  4. 依赖管理​​:vcpkg简化了复杂依赖关系的管理。
    这种技术栈特别适合需要在x86开发机上为ARM服务器或嵌入式设备开发gRPC服务的场景,大大提高了开发效率和部署便利性。
http://www.dtcms.com/wzjs/578501.html

相关文章:

  • 漳州网站建设哪家好什么是商务网站
  • 怎么制作微信购物网站网站制作工具 简易
  • 最便宜网站空间有域名 如何免费建设网站
  • 网站模版设计企业公司网站模版
  • 高端定制网站开发设计建站流程好听好记的网站域名
  • asp网站首页兰陵建设局网站
  • 网站dns多久刷新网站信息员队伍建设方案
  • 南昌网站建设南昌吊车出租中国住房城乡建设厅网站首页
  • 360客户如何做网站推广上海公共招聘网官方网站
  • 网站建设怎么购买域名电子商务网站开发与建设
  • 作品展示的网站好的公众号
  • 网站建设过程中要怎么打开速度东莞债优化
  • 永州市开发建设投资有限公司网站手机在线制作网站
  • 深圳品牌创意网站建设作作网站
  • 建设工程招标专业网站WordPress文字数据
  • 自己建网站能赚钱吗公共资源交易中心官网
  • 东昌府做网站推广seo全称英文怎么说
  • 做跟单员的话应该关注哪些网站为什么做免费视频网站
  • 企业自助建站的网站唐山网站建设维护
  • 呼和浩特 网站建设怎样建设网站教程
  • 长沙网站托管seo优化公司成都机械设计公司
  • php 网站建设 教学企业网站建设规划设计任务书
  • 陕西网站开发联系方式产品设计经典案例
  • 一句话让客户主动找你乐清网站优化
  • 国外网站的建设未来前景比较好的行业有哪些
  • 网站模版 下载工具网统管公司的网站托管服务怎么样
  • wix怎样做网站平台公司代理注册
  • 网站形式的设计哈尔滨网站建设价格低
  • 花生壳做局域网站宁波哪里有网站建设
  • dede 电商网站jsp网站开发实例pdf