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

网站建设基础策划网站建设中国十强

网站建设基础策划,网站建设中国十强,网站建设公司招聘,聊天app推广代理什么是跨平台编译#xff1f; 跨平台编译#xff1a;即交叉编译#xff0c;是在一个平台上生成另一个平台上的可执行文件。所谓平台#xff0c;实际上包含两个概念#xff1a;体系架构(Architecture)、操作系统 (Operating System#xff09;。同一个体系架构可以运行不同…什么是跨平台编译 跨平台编译即交叉编译是在一个平台上生成另一个平台上的可执行文件。所谓平台实际上包含两个概念体系架构(Architecture)、操作系统 (Operating System。同一个体系架构可以运行不同的操作系统同样同一个操作系统也可以在不同的体系架构上运行。 静态编译在编译可执行文件的时候将可执行文件需要调用的对应库都集成到可执行文件内部使得可执行文件不需要其他任何依赖就能运行。 Go 实现跨平台编译的思想其实很简单通过保存可以生成最终机器码的多份翻译代码在编译时根据 GOARCHxxx 和 GOOSxxx 参数对应体系架构和操作系统进行初始化设置最终调用对应平台编写的特定方法来生成机器码从而实现跨平台编译。 有一点需要注意Go 所谓的跨平台编译只是针对 Go 代码部分它是 Go 的跨平台编译器cross-compiler toolchains。当我们使用了 CGO 时要想实现跨平台编译同时需要让 C/C代码也支持跨平台。 官方 Cgo 这块目前有一篇 博客 和 命令行文档。比如 sqlite 的 golang 驱动 go-sqlite3 就是基于 Cgo 的实现。编译本地版本Go 本身已经支持得非常好基本不需要额外设置直接通过 go build 编译即可但是要想编译其他平台的二进制版本就需要跨平台的 $(CC), $(CXX) 支持。 无 CGO 项目的交叉静态编译 在不启用 CGO 的情况下跨平台编译是非常简单的如下 CGO_ENABLED0 GOOSlinux GOARCHarm64 go build -ldflags -s -w --extldflags -static -fpic main.goCGO_ENABLED0 这个值默认是 1也就是开启的需要手动指定为关闭因为 CGO 是不支持跨平台编译的使用 go env CGO_ENABLED 查看默认值 GOOS, GOARCH 构建的平台GOOSlinux 是因为安卓底层就是 linuxaarch64 架构直接使用 arm64如果 GOARCHarm则要使用 GOARM7指定 arm 版本可选 5,6,7在 这里 看完整支持列表 -ldflags 编译选项-s -w 去掉调试信息可以减小构建后文件体积 –extldflags “-static -fpic” 完全静态编译要跨平台编译放到其他系统和架构中运行建议静态编译否则程序启动的时候会提示找不到依赖的 so 文件 这样编译生成的程序就可以任意放到指定平台下运行。由于 CGO 的存在跨平台会编译失败。那该如何解决呢 CGO 项目的交叉静态编译 和 Go 一样当我们拥有目标平台的 C/C代码编译器后自然就能够编译为目标平台的可执行文件。 不同平台的编译器 下载地址 https://musl.cc/ 以 aarch64-linux 为例下载 aarch64-linux 的编译器 https://musl.cc/aarch64-linux-musl-cross.tgz 解压然后把解压好的目录下 bin 文件路径放到 PATH 环境变量中 此时通过指定 C/C编译器为/usr/local/bin/x86_64-linux-musl-gcc替换默认的 C/C编译器本机编译可通过 go env CC 查看即可完成含有 CGO 的 Go 代码跨平台编译任务。 $ CGO_ENABLED1 CCaarch64-linux-musl-gcc CXXaarch64-linux-musl-g GOOSlinux GOARCHarm64 go build -o server -ldflags -s -w --extldflags -static -fpic main.goCGO_ENABLED1 开启 CGO因为项目用到了 C 语言的代码 CCaarch64-linux-musl-gcc 指定 gcc 的编译器为 aarch64-linux-musl-gcc这个默认值是 gcc也就是当前操作系统和架构使用的 gcc使用命令 $(go env CC) --target-help 可以看看默认 gcc 支持什么平台 CXXaarch64-linux-musl-g 指定 g 的编译器为 aarch64-linux-musl-g规则和 CC 一样只是用来编 C 代码的如果还用到了 C 代码必须指定该项 -ldflags ‘-s -w’ go 编译选项-s -w 去掉调试信息可以减小构建后文件体积 最终在本机系统上就编译得到了 aarch64 linux 平台的可执行文件。 https://imwnk.cn/archives/cgo-compile/
http://www.hkea.cn/news/14502774/

相关文章:

  • 做任务的奖金网站重庆市建设工程信息网行业协会
  • 优享揭阳网站建设商务网站建设实训过程
  • 网站如何做自适应网站开发和设计如何合作
  • 医院网站和公众号建设方案wordpress loginview
  • 网站后台无法访问o2o有哪些电商平台
  • 建设什么网站挣钱用jsp和mysql做网站
  • 多个网站给一个网站推广百度竞价广告代理
  • 网站建设 博采网络 学校php cms
  • 网站的结构与布局优化网站建设方案书 5个备案
  • 奇葩网站100个卓越高职院建设网站
  • 建设银行网站查询房贷信息网页编辑哪个键
  • 网站改版如何做301网站建设解决方案服务商
  • 网站icp备案网址互联网推广品牌
  • 东莞高端品牌网站建设网址大全123上网导航
  • 网站建设需要金额默认网站停止
  • 谁能给我一个网站谢谢河南app软件开发价位
  • 哪个网站可以做兼职讲师虚拟资源交易平台Wordpress源码
  • 色弱可以做网站开发吗免费企业网站开发
  • 云南省玉溪市建设局官方网站家居网站建设行业现状
  • 网站做sem推广时要注意什么网站建设系统服务机构
  • 成都网站建设新闻wordpress网站投放广告
  • 做商城网站的流程外贸网站谷歌seo
  • 潍坊网站空间公司装修设计
  • 关于asp.net的网站模板seo国外英文论坛
  • 两个男生如何做网站网站开发需要多少钱销售
  • 强化网站建设网站开发实战 课程
  • 做外贸的网站开店流程两学一做山东网站
  • 单县网站建设潍坊做网站教程
  • 网站 虚拟目录软件工程师证书有用吗
  • 无锡 做网站东莞哪家公司做网站好