返回顶部
首页 > 资讯 > 后端开发 > 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

猜你喜欢
  • 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
  • Linux动态链接库的使用
    动态链接库与普通的程序相比而言,没有main函数,是一系列函数的实现。通过shared和fPIC编译参数生产so动态链接库文件。程序在调用库函数时,只需要连接上这个库即可。例如下面实现一个简单的整数四则运输的动态链接库,...
    99+
    2022-06-04
    Linux 动态链接库
  • Python调用动态链接库(DLL)
    Python调用动态链接库(DLL) 动态链接库(Dynamic Link Libraries,简称DLL)是一种被多个程序共享的库文件,可以被用于将程序分解为小模块,减少内存占用,加快程序运行速度。...
    99+
    2023-09-03
    python 开发语言
  • python调用dll动态链接库
    还是调用动态库,各种调用,但是呢,Python调用dll貌似不麻烦,至少我第一次就调用成功嘞。至于Python,我连语法都不知道,不过问题不大,边百度...
    99+
    2023-01-31
    动态链接库 python dll
  • Wordpress固定链接伪静态的设置方法
    今天,想着在我机器上测试一下wordpress,虽然之前也有这个开源的程序,可是一直没有安装呢,再加上最近一直忙于其他的工作,也忽略了不少,突然想建立一个属于自己的博客,我想记录一些生活中的点点滴滴以及爱好之类的。于是今...
    99+
    2022-06-12
    固定链接伪静态
  • 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
  • C#中怎么修改动态链接库
    这期内容当中小编将会给大家带来有关C#中怎么修改动态链接库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#实现修改动态链接库,将b修改为双重指针:public class RefCo...
    99+
    2023-06-17
  • 关于ffmpeg的动态链接库问题
    FFmpeg是一个开源的跨平台音视频处理工具,可以用于录制、转码、编辑等各种音视频处理操作。它提供了一组动态链接库,可以用于在自己的...
    99+
    2023-09-08
    ffmpeg
  • python调用动态链接库传送proto
    什么是protobuf    protobuf是Google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的XML表示高效短小得多。开发者定义类似于结构体的message,通过pro...
    99+
    2023-01-31
    动态链接库 python proto
  • Rust使用libloader调用动态链接库
    目录引言main.rs 代码引言 最近需要使用Rust动态调用动态链接库,本来打算是使用libloading的,但是libloading在调用dll中的函数的时,是必须要在编译时确定...
    99+
    2024-04-02
  • linux动态链接库的使用方法
    这篇文章主要介绍“linux动态链接库的使用方法”,在日常操作中,相信很多人在linux动态链接库的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux动态链接库的使用方法”的疑惑有所帮助!接下来...
    99+
    2023-06-09
  • dedecms伪静态设置以及目录链接301跳转实现方法(伪静态)
    htaccess伪静态的规则 通过htaccess使用伪静态,则必须空间商支持Rewrite模块,该模块负责URL的重写。否则即便是设置好了,也无法使用,并且还有可能出现500错误。 下面是dedecms的伪静态设置文本...
    99+
    2022-06-12
    dedecms 伪静态
  • linux动态链接库使用方法分享
    1、前言 在实际开发过程中,各个模块之间会涉及到一些通用的功能,比如读写文件,查找、排序。为了减少代码的冗余,提高代码的质量,可以将这些通用的部分提取出来,做出公共的模块库。通过动态链接库可以实现多个模块之...
    99+
    2022-06-04
    使用方法 动态链接库 linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作