iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > GO >CGO_ENABLED 如何影响动态链接和静态链接?
  • 429
分享到

CGO_ENABLED 如何影响动态链接和静态链接?

2024-04-04 23:04:36 429人浏览 薄情痞子
摘要

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《CGo_ENABLED 如何影响动态链接和静态链接?》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《CGo_ENABLED 如何影响动态链接和静态链接?》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

我们正在编译要在 Docker 上运行的 Go 代码,并且正在调查为什么我们的二进制文件没有执行。我们发现它缺少一些动态库(尽管我们需要静态链接的二进制文件)。

这就是它的编译方式。

env GOOS=linux CGO_ENABLED=1 GO111MODULE=on GOPRIVATE=GitHub.com/ourrepo GOPROXY=https://proxy.golang.org go build --installsuffix cgo --ldflags='-extldflags=-static' -o程序main.go

使用相同构建命令与 CGO_ENABLED=0 最终解决了问题,并且输出二进制文件已静态链接。

现在奇怪的是我们有另一个程序使用相同的构建命令,这次使用 CGO_ENABLED=1 并且......它是静态链接的!

所以我很困惑为什么在某些情况下 CGO_ENABLED=1 会产生动态链接,有时会产生静态链接。很高兴提供更多详细信息。


解决方案


一些 Go 包在底层使用 CGO,利用(非常)通用的 C 库来实现跨环境和运行时遇到的边缘情况的更广泛兼容性。

这些通用库可以在大多数主要操作系统发行版上找到 - 但显然不包含在 Scratch 映像中(本质上是完全空的)。

CGO_ENABLED 默认设置为 1,这意味着必须使用 CGO_ENABLED=0 显式禁用它才能避免这种情况,即使使用 -static 标志也是如此。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《CGO_ENABLED 如何影响动态链接和静态链接?》文章吧,也可关注编程网公众号了解相关技术文章。

您可能感兴趣的文档:

--结束END--

本文标题: CGO_ENABLED 如何影响动态链接和静态链接?

本文链接: https://www.lsjlt.com/news/596368.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CGO_ENABLED 如何影响动态链接和静态链接?
    亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《CGO_ENABLED 如何影响动态链接和静态链接?》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质...
    99+
    2024-04-04
  • C++静态链接与动态链接详解
    目录一、GCC工作流程二、静态链接与动态链接1、静态链接2、动态链接总结一、GCC工作流程 预处理:把#头文件展开,进行宏替换,去掉注释(生成.i文件) 编译:把预处理后的文件生成汇...
    99+
    2024-04-02
  • linux中动态链接和静态链接的区别有哪些
    这篇文章主要介绍“linux中动态链接和静态链接的区别有哪些”,在日常操作中,相信很多人在linux中动态链接和静态链接的区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux中动态链接和静态链接...
    99+
    2023-06-29
  • linux下静态链接库和动态链接库的区别有哪些
    这篇文章主要讲解了“linux下静态链接库和动态链接库的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux下静态链接库和动态链接库的区别有哪...
    99+
    2023-02-07
    linux
  • 外部链接和内部链接对SEO的影响有何不同
    外部链接和内部链接在SEO方面的影响有三个主要不同之处:一、外部链接主要影响网站权威性,而内部链接主要影响网站结构;二、外部链接促进了信誉和排名,内部链接有助于内容的连贯性和导航;三、外部链接的质量和来源至关重要,而内部链接的有效布局和用户...
    99+
    2023-10-29
    链接 有何不同 SEO
  • python调用dll动态链接库
    还是调用动态库,各种调用,但是呢,Python调用dll貌似不麻烦,至少我第一次就调用成功嘞。至于Python,我连语法都不知道,不过问题不大,边百度...
    99+
    2023-01-31
    动态链接库 python dll
  • Python调用动态链接库(DLL)
    Python调用动态链接库(DLL) 动态链接库(Dynamic Link Libraries,简称DLL)是一种被多个程序共享的库文件,可以被用于将程序分解为小模块,减少内存占用,加快程序运行速度。...
    99+
    2023-09-03
    python 开发语言
  • Linux怎么建立静态链接库.lib文件
    这篇文章主要讲解了“Linux怎么建立静态链接库.lib文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux怎么建立静态链接库.lib文件”吧!  主要有两步:  1.编译源码  2...
    99+
    2023-06-13
  • windows kernel32.dll动态链接库报错如何解决
    这篇文章主要讲解了“windows kernel32.dll动态链接库报错如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“windows kernel32.dll动态链接库报错如何解决...
    99+
    2023-07-01
  • C++封装静态链接库和使用的详细步骤
    目录零碎记事为什么要把程序封装成库博主的环境封装步骤准备好待封装的程序开始封装配置项目编译找到编译好的静态库打包使用静态库使用步骤包含头文件添加链接路径源文件设置项目设置零碎记事  ...
    99+
    2022-11-13
    C++静态链接库 C++静态链接库使用
  • 如何理解.NET静态事件链
    本篇文章为大家展示了如何理解.NET静态事件链,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在我们日常开发过程中经常会遇到多个类实例之间的关联,不管是B/S还是C/S的项目,在对实例的使用是一样的;...
    99+
    2023-06-17
  • Rust使用libloader调用动态链接库
    目录引言main.rs 代码引言 最近需要使用Rust动态调用动态链接库,本来打算是使用libloading的,但是libloading在调用dll中的函数的时,是必须要在编译时确定...
    99+
    2024-04-02
  • python调用动态链接库传送proto
    什么是protobuf    protobuf是Google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的XML表示高效短小得多。开发者定义类似于结构体的message,通过pro...
    99+
    2023-01-31
    动态链接库 python proto
  • C#中怎么修改动态链接库
    这期内容当中小编将会给大家带来有关C#中怎么修改动态链接库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#实现修改动态链接库,将b修改为双重指针:public class RefCo...
    99+
    2023-06-17
  • linux动态链接库的使用方法
    这篇文章主要介绍“linux动态链接库的使用方法”,在日常操作中,相信很多人在linux动态链接库的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux动态链接库的使用方法”的疑惑有所帮助!接下来...
    99+
    2023-06-09
  • 关于ffmpeg的动态链接库问题
    FFmpeg是一个开源的跨平台音视频处理工具,可以用于录制、转码、编辑等各种音视频处理操作。它提供了一组动态链接库,可以用于在自己的...
    99+
    2023-09-08
    ffmpeg
  • 怎么在CentOS中添加动态链接库
    今天就跟大家聊聊有关怎么在CentOS中添加动态链接库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。第一:在/etc/profile中添加共享库的路径:[plain] vi...
    99+
    2023-06-10
  • OpenSSL动态链接库源码安装教程
    Openssl 是一个开放源代码的SSL协议的产品实现,它采用C语言作为开发语言,具备了跨系统的性能。调用Openssl的函数就可以实现一个SSL加密的安全数据传输通道,从而保证客户...
    99+
    2024-04-02
  • labview动态链接库dll初始化失败如何解决
    在LabVIEW中使用动态链接库(DLL)时,如果出现初始化失败的情况,有几个可能的解决方法:1. 确保DLL文件存在并位于正确的路...
    99+
    2023-09-15
    labview
  • C语言外部链接的静态变量怎么使用
    这篇文章主要介绍“C语言外部链接的静态变量怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言外部链接的静态变量怎么使用”文章能帮助大家解决问题。外部链接的静态变量具有文件作用域、外部链接和...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作