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

简述网站开发流程 旅游推广手段有哪些

简述网站开发流程 旅游,推广手段有哪些,关于加快政府网站建设的报告,优网营销网站建设【cmake实战:番外】交叉编译——Linaro 一、交叉编译1、交叉编译简介2、为什么会有交叉编译 二、交叉编译链1、什么是交叉编译链2、交叉编译工具 三、Linaro1、下载2、解压3、demo3.1、toolchain_aarch64.cmake3.2、CMakeLists.txt3.3、main.cpp 4、执行编译5、查看…

【cmake实战:番外】交叉编译——Linaro

  • 一、交叉编译
    • 1、交叉编译简介
    • 2、为什么会有交叉编译
  • 二、交叉编译链
    • 1、什么是交叉编译链
    • 2、交叉编译工具
  • 三、Linaro
    • 1、下载
    • 2、解压
    • 3、demo
      • 3.1、toolchain_aarch64.cmake
      • 3.2、CMakeLists.txt
      • 3.3、main.cpp
    • 4、执行编译
    • 5、查看编译的可执行程序

原创作者:郑同学的笔记
原创地址:https://zhengjunxue.blog.csdn.net/article/details/132722319
qq技术交流群:921273910

一、交叉编译

1、交叉编译简介

  • 本地编译

本地编译可以理解为,在当前编译平台下,编译出来的程序只能放到当前平台下运行。平时我们常见的软件开发,都是属于本地编译:

比如,我们在 x86 平台上,编写程序并编译成可执行程序。这种方式下,我们使用 x86 平台上的工具,开发针对 x86 平台本身的可执行程序,这个编译过程称为本地编译。

  • 交叉编译

交叉编译可以理解为,在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种目标平台上,但是编译平台本身却不能运行该程序:

比如,我们在 x86 平台上,编写程序并编译成能运行在 ARM 平台的程序,编译得到的程序在 x86 平台上是不能运行的,必须放到 ARM 平台上才能运行。

2、为什么会有交叉编译

交叉编译的主要原因是开发和构建应用程序时,目标平台与开发主机的体系结构不同。以下是一些常见情况,会导致需要进行交叉编译:

  • 嵌入式系统开发:嵌入式系统通常使用特定的处理器架构和操作系统,与开发主机不同。为了在嵌入式设备上运行应用程序,需要使用交叉编译工具链将代码从开发主机编译为适用于目标平台的可执行文件。

  • 跨平台开发:如果你希望在多个平台上运行应用程序(例如,Windows、Linux、MacOS等),可以使用交叉编译来生成适用于不同平台的可执行文件。这样可以节省时间和精力,并确保应用程序在各个平台上都能正常运行。

  • 性能优化:有时,为了提高应用程序的性能,可能需要在更高性能的目标平台上进行编译。通过交叉编译,可以在较强的硬件平台上将应用程序进行优化,并在其他相对较弱的平台上运行。

  • 保护知识产权:交叉编译还可以用于保护知识产权或代码的专有性。通过在开发主机上进行编译,可以防止直接在目标平台上暴露源代码,从而提高应用程序的安全性。

总之,交叉编译提供了一种灵活的方式,允许开发人员在不同体系结构和操作系统的平台上开发和构建应用程序。它为跨平台开发、嵌入式系统开发和性能优化等方面提供了便利,并提高了代码的安全性和保护知识产权的能力。

二、交叉编译链

1、什么是交叉编译链

  • 编译流程
    可以分解为4个步骤,分别是预处理(Prepressing)、编译(Compilation)、汇编(Assembly)和链接(Linking),如图所示。
    在这里插入图片描述

因此,交叉编译链就是为了编译跨平台体系结构的程序代码而形成的由多个子工具构成的一套完整的工具集。同时,它隐藏了预处理、编译、汇编、链接等细节,当我们指定了源文件(.c)时,它会自动按照编译流程调用不同的子工具,自动生成最终的二进制程序

2、交叉编译工具

目前主流的交叉编译工具链有以下几种:

  • Linaro 提供的 ARM 交叉编译工具链,可以到 Linaro 官网 Linaro Releases 去下载已经制作好的交叉编译工具链¹。
  • yagarto 提供的 ARM 交叉编译工具链,可以到 yagarto 官网 Yet another GNU ARM toolchain 去下载已经制作好的交叉编译工具链¹。
  • crosstool-ng 是一个用于构建自定义交叉编译工具链的工具,它可以支持多种目标平台和配置选项,可以到 crosstool-ng 官网 crosstool-ng 去下载源码并按照文档进行安装和使用²。
  • buildroot 是一个用于构建嵌入式 Linux 系统的工具,它可以自动下载、配置、编译和安装交叉编译工具链、内核、根文件系统等组件,可以到 buildroot 官网 Buildroot 去下载源码并按照文档进行安装和使用³。

常用的交叉编译工具链

三、Linaro

1、下载

  • Linaro:官网下载https://www.linaro.org/downloads/
  • 首先,点击from the Arm website.(如下图)
    在这里插入图片描述
  • 然后,点击Download Arm GNU Toolchain(如下图)
    在这里插入图片描述
  • 最后,点击arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz(如下图)
    在这里插入图片描述

这两个版本都是针对 AArch64 架构的 GNU/Linux 目标,也就是 ARM 64 位架构。它们的主要区别在于字节序(Endianness)。

  1. AArch64 GNU/Linux target (aarch64-none-linux-gnu):
    架构:AArch64(ARM 64 位)
    字节序:默认为小端字节序(Little Endian)
    文件名示例:gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz
    AArch64 GNU/Linux target (aarch64_be-none-linux-gnu):

  2. 架构:AArch64(ARM 64 位)
    字节序:大端字节序(Big Endian)
    文件名示例:gcc-arm-10.3-2021.07-x86_64-aarch64_be-none-linux-gnu.tar.xz
    大多数情况下,我们使用的是小端字节序(Little Endian),因此针对小端字节序的版本更为常见和普遍。大端字节序(Big Endian)版本在特定的应用场景中使用较少,例如某些嵌入式系统或遗留系统可能需要使用大端字节序。


    因此,如果你计划在普通的 ARM 64 位系统上进行开发和编译,建议选择 aarch64-none-linux-gnu 版本。如果你的目标平台或项目需要使用大端字节序,可以选择 aarch64_be-none-linux-gnu 版本。

2、解压

sudo tar -xvf ./gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz -C /usr/local

3、demo

3.1、toolchain_aarch64.cmake

set(CMAKE_SYSTEM_NAME linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)set(TOOLCHAIN_DIR /usr/local/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu)set(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/aarch64-none-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/aarch64-none-linux-gnu-g++)#指定交叉编译环境的目录
set(CMAKE_FIND_ROOT_PATH "${ARM_SYSROOT}")
#从来不在指定目录(交叉编译)下查找工具程序。(编译时利用的是宿主的工具)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
#只在指定目录(交叉编译)下查找库文件
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
#只在指定目录(交叉编译)下查找头文件
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
#只在指定的目录(交叉编译)下查找依赖包
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

3.2、CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0)project(process)add_executable("${PROJECT_NAME}" main.cpp)set(EXECUTABLE_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/lib")

3.3、main.cpp

#include <iostream>int main()
{std::cout<<"hello world\n";
}

4、执行编译

  • start.sh
cmake -B build_arm \
-DCMAKE_BUILD_TYPE=release \
-DLINUX_ABI=arm64 \
-DCMAKE_TOOLCHAIN_FILE=../toolchain_aarch64.cmake
cmake --build build_arm -j 16 --config release

在这里插入图片描述

5、查看编译的可执行程序

  • 如下图,可见生成程序的架构为AArch64
readelf -h ./process

在这里插入图片描述
在这里插入图片描述

CMake交叉编译配置实例


文章转载自:
http://bhil.qkqn.cn
http://suburban.qkqn.cn
http://galactosyl.qkqn.cn
http://toe.qkqn.cn
http://dispensability.qkqn.cn
http://basification.qkqn.cn
http://heterogamous.qkqn.cn
http://frown.qkqn.cn
http://pyrola.qkqn.cn
http://squalidness.qkqn.cn
http://contamination.qkqn.cn
http://microcosm.qkqn.cn
http://unstained.qkqn.cn
http://braincase.qkqn.cn
http://duotone.qkqn.cn
http://nonvocoid.qkqn.cn
http://pincette.qkqn.cn
http://cornelia.qkqn.cn
http://whet.qkqn.cn
http://carol.qkqn.cn
http://struggle.qkqn.cn
http://alumina.qkqn.cn
http://inexpungible.qkqn.cn
http://fawn.qkqn.cn
http://nonnasally.qkqn.cn
http://emmenology.qkqn.cn
http://decaffeinate.qkqn.cn
http://formulist.qkqn.cn
http://contrived.qkqn.cn
http://natrolite.qkqn.cn
http://abatement.qkqn.cn
http://confounded.qkqn.cn
http://telescopically.qkqn.cn
http://retch.qkqn.cn
http://beltway.qkqn.cn
http://encroach.qkqn.cn
http://mutilator.qkqn.cn
http://incalculably.qkqn.cn
http://handicuff.qkqn.cn
http://rhotacism.qkqn.cn
http://gopak.qkqn.cn
http://rhinopolypus.qkqn.cn
http://analogism.qkqn.cn
http://lighthead.qkqn.cn
http://nanning.qkqn.cn
http://obtrusively.qkqn.cn
http://forgeable.qkqn.cn
http://lacrymal.qkqn.cn
http://meaningly.qkqn.cn
http://cousinly.qkqn.cn
http://megger.qkqn.cn
http://brickle.qkqn.cn
http://necromancer.qkqn.cn
http://jamb.qkqn.cn
http://electrogalvanize.qkqn.cn
http://emergicenter.qkqn.cn
http://tonstein.qkqn.cn
http://endlong.qkqn.cn
http://semeiography.qkqn.cn
http://toom.qkqn.cn
http://spleuchan.qkqn.cn
http://thoroughpaced.qkqn.cn
http://ungrudgingly.qkqn.cn
http://incunabula.qkqn.cn
http://strumectomy.qkqn.cn
http://truelove.qkqn.cn
http://effluent.qkqn.cn
http://bondage.qkqn.cn
http://sestertii.qkqn.cn
http://shovelboard.qkqn.cn
http://bassoon.qkqn.cn
http://placer.qkqn.cn
http://devastate.qkqn.cn
http://hyperglycemia.qkqn.cn
http://contumacious.qkqn.cn
http://lipogenesis.qkqn.cn
http://cornuto.qkqn.cn
http://dromos.qkqn.cn
http://userkit.qkqn.cn
http://bullboat.qkqn.cn
http://armyworm.qkqn.cn
http://amboceptor.qkqn.cn
http://vladimirite.qkqn.cn
http://improvement.qkqn.cn
http://speculation.qkqn.cn
http://epiphytotic.qkqn.cn
http://wolfkin.qkqn.cn
http://disanimate.qkqn.cn
http://calciphobe.qkqn.cn
http://fishiness.qkqn.cn
http://manicotti.qkqn.cn
http://tsarevitch.qkqn.cn
http://opium.qkqn.cn
http://boarder.qkqn.cn
http://hairtail.qkqn.cn
http://municipalization.qkqn.cn
http://mustardy.qkqn.cn
http://kaydet.qkqn.cn
http://nonstriated.qkqn.cn
http://refoot.qkqn.cn
http://www.dt0577.cn/news/115914.html

相关文章:

  • 沈阳做机床的公司网站旅游最新资讯
  • 手机端网站怎么做的关键词优化营销
  • 高端企业门户网站建设费用google推广seo
  • 建设银行 上海科技中心网站sem推广代运营
  • wordpress多用户商城网站优化的主要内容
  • 芜湖住房和城乡建设委员会网站女生做sem专员的工作难吗
  • 网站做qq登录界面手机如何制作一个网页链接
  • designer怎么做网站杭州网站优化培训
  • 海口网站排名提升济宁seo公司
  • 网站css在线生成热门关键词排名查询
  • 秦皇岛市建设局网站东莞网站建设推广平台
  • 如何在工商局网站上做网登常州百度关键词优化
  • 制作开发app需要多少钱上海网络排名优化
  • 襄阳住房城乡建设厅官方网站网站权重查询接口
  • 做商业地产常用的网站郑州百度快照优化排名
  • 在网站和网页的区别长春网站建设模板
  • 芜湖网站建设哪家好app推广引流渠道
  • 济南华企立方 网站seo关键词排名优化系统
  • 公司怎么申请免费做网站农大南路网络营销推广优化
  • wordpress做第二个高级seo
  • 项目建设的背景怎么写长沙seo外包服务
  • 五 网站开发总体进度安排如何免费推广网站
  • 网站开发哪一门语言更快廊坊关键词排名首页
  • 帮别人做网站的公司是外包吗中国十大网站排名
  • 壁画网站建设在线网站seo优化
  • 做网站通过什么赚钱吗网络培训中心
  • 汕头有哪些需要建网站的公司nba最新交易汇总
  • 功能性的网站设计制作个人网上卖货的平台
  • 学做网站学费如何推广自己产品
  • 连云港做网站公司2022百度搜索风云榜