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

建设简单企业网站滨州正规网站建设公司

建设简单企业网站,滨州正规网站建设公司,寻找网站设计与制作,江苏网站建站系统哪家好前言#xff1a; 前端时间把本地的 Golang 开发环境卸载了#xff0c;如果编写代码的话就是启动一个 Golang 的 Docker 容器。这样做对于服务端开发本来也是没有问题的#xff0c;但是有时候想要把程序放到 Windows 上面来执行#xff0c;那就遇到麻烦了。因为 Docker 容器…前言 前端时间把本地的 Golang 开发环境卸载了如果编写代码的话就是启动一个 Golang 的 Docker 容器。这样做对于服务端开发本来也是没有问题的但是有时候想要把程序放到 Windows 上面来执行那就遇到麻烦了。因为 Docker 容器本质上是 Linux 环境所以它直接编译的二进制可执行文件也是基于 Linux 的直接是 Windows 上是无法运行的。不过幸好Golang 在交叉编译这方面做得很好我们只需要简单设置一下就可以了CGO_ENABLED0 GOOSwindows GOARCHamd64 go build main.go CGO_ENABLE0 关闭 CGO。 GOOS 目标操作系统通常就是 windows linux drawin。 GOARCH 目标架构通常就是 amd64现在也有些是arm架构的不过我也没有使用过。 注我了解到有 Windows 容器这个概念似乎是直接运行在 Windows 上的不过我也没有仔细了解毕竟技术栈还是基于 Linux 生态的。 这样做通常就能解决问题了但是如果我们引入了第三方库那么它就可能不行了。这里就和 CGO_ENABLE 这个选项有关了。前段时间在写那个 HTTP 代理的 demo之后我引入了 sqlite3 这个库用于记录访问数据。然后再次交叉编译之后就遇到问题了我们来看一下这个问题。 编译 Windows 执行 执行的话它直接就报错了并且也说了原因是因为 CGO_ENABLED0同时也指出了是 go-sqlite3 这个库导致的。 Linux执行 这里尝试在 Linux 执行一下这样做也没有意义不过这个报错很有趣的。它提示是没有文件或者目录但是实际上是可执行文件无法解析导致的。所以以后遇到类似的问题就不需要去想为什么文件不存在了它就是报这个错误并不是文件不存在。 那么该怎么解决呢最方便快捷的方式就是重新在本地安装一个 Golang 的开发环境。 没开玩笑因为这样确实是最快的而且节省时间。如果你有时间和兴趣那就来看接下来的部分吧。 什么是交叉编译 所谓编译就是把代码变成二进制可执行文件的过程。代码就是一段 Unicode 字符它是肯定可以跨平台的但是最终运行的并不是它最终运行的是代码的编译产物。我们平时写完一个小程序直接就点击运行了。但是这里的代码其实是不能直接运行的编译型语言它内部还是要进行一个编译的过程把代码转成目标平台的二进制可执行文件。这个二进制可执行文件是和操作系统和目标架构绑定的所以你换一个操作系统或者架构它就不能运行了。但是有时候我们需要在某个架构的某个操作系统上为特定架构和指定操作系统的另一个平台编译程序这就是交叉编译。 那么我们这里遇到的问题就是我需要在 Linux 下交叉编译可以在 Windows 下可以运行的二进制可执行文件了。交叉编译一般需要交叉编译工具链这个其实还是比较复杂的。所以我们就要采取一些简单的方式了——站在巨人的肩膀上。已经有人做了相关的工作了我们直接采取拿来主义就好了。 交叉编译的 Docker 镜像 这是在 Github 上面找到的一个项目因为上面说的这种需求还是挺常见的所以已经有人做了相关的工作了它是将交叉编译的相关工具链制作成了 Docker 镜像。 Docker image for building Go binaries for Windows with MinGW-w64 toolchain based on official Go Docker image. The repository provides simple cross-compilation environment for windows 32 and 64bit builds. Docker镜像用于使用基于官方Go Docker镜像的 MinGW-w64 工具链为Windows构建Go二进制文件。 这个仓库提供了简单的 win32 和 win64 构建的跨平台编译环境。 注虽然我也了解 Linux 上用 gcc/clangwindows 上用 mingw。不过我对于它们的了解也仅限于此了以前也遇到过有些软件在 windows 上需要安装 mingw 的问题不过也没有深入去了解过因为现在使用的语言像是 Go、Python 开发 Web 服务通常也接触不到这些东西。 Docker image for building Go binaries with MinGW toolchain 拉取镜像 docker pull x1unix/go-mingw:latest # or 1.17 for specific Go version 在容器内编译 docker run --rm -it -v /YourPackageSrc:/go/work \-w /go/work \x1unix/go-mingw go build .它的用法很简单启动一个交互式容器然后把本地项目挂载到容器内的目录中直接编译就行了默认是64位的也可以编译32位的不过我也没有这个需求就没有尝试。 解决问题 好了那么我们用它来解决自己遇到的问题吧。 看这个输出我感觉似乎引入了一些多余的库而且最后生成的文件也是大了一圈 程序启动正常 PS 这里用的这个 github 的项目简单易用对于这种简单的需求直接拉取镜像然后编译就行了。我在 Github 上面搜索的时候还发现了一个更加强大的项目vxbuild-cross看描述它支持 Windows 和 MacOS不过因为我没有 MacOS 的设备所以我就没有尝试。不过还是把它记录在这里了也许有人会需要这个东西呢。
http://www.zqtcl.cn/news/51073/

相关文章:

  • 做网站新手流程个人自助网站
  • 营销运营推广服务成都市seo网站公司
  • 唯品会一家做特卖的网站 分析凡客诚品官方网店下
  • 国土资源局加强网站建设东莞路桥公司是国企吗
  • html网站怎么做的重庆企业建站程序
  • 公众号里的网站怎么做如何拥有自己的网站域名
  • 网站建设需要哪些的ps荥阳企业网站建设
  • 二手书哪个网站做的好网页qq家园
  • 门户网站建设报告网络平台有哪些?
  • 网站开发顶岗实践总结中国十大建设工程项目
  • 淘客网站模版广州牌手表网站
  • 武威市住房和建设局网站wordpress 企业版
  • 百度做网站推广电话瀑布网站模板
  • 长治网站制作一般需要多少钱个人域名备案做企业网站
  • 如何让自己做的网站在google搜索引擎上搜到国际网站群建设方案
  • 大型车产品网站建设怎么跳转网站
  • 北京移动端网站优化淮南发布app下载
  • 网站模板套用大方网站制作
  • 广州建网站公司排名叫别人做网站要注意什么
  • 关于政务网站建设工作情况的总结网站开发程序的移交
  • 网站注册免费qq北京做网站的公司商集客电话
  • 免费网站中文源码下载如何开网店0基础教程
  • 网站建设需要注意什么哪些ppt模板下载平台
  • 济宁专业做网站WordPress删除插件链接
  • 做网站怎么备案深圳建网站开发费用
  • 网站建设600分站优缺点河南住房和城乡建设厅网站资质
  • 手机网站开发哪个好织梦资源下载站网站模板
  • 网站上的ar是什么软件做的微云怎么做网站
  • 第9类商标有网站开发专业网站定制 北京
  • wordpress下载后放哪三明seo培训