【问题标题】:go module didn't download cgo soft links of dynamic library correctlygo模块没有正确下载动态库的cgo软链接
【发布时间】:2019-05-16 10:23:18
【问题描述】:

环境为ubuntu 16.04 64bit,go版本go1.12 linux/amd64

我正在尝试将我的 golang 项目从 gopath 切换到 gomodule。我的项目导入的一个包是使用cgo调用ffmpeg,这个包有几个动态ffmpeg库,例如libavcodec.so、libavcodec.so.57、libavcodec.so.57.1​​07.100,前两个文件是软链接文件 问题是我去构建我的golang项目时,go模块只下载libavcodec.so.57.1​​07.100,没有下载两个软链接文件

我尝试去获取包,并成功获取了包括软链接文件在内的所有库

我希望 go module 下载所有 c 动态库文件,包括软链接文件,但我没有得到软链接文件


更新:我在github上提交了一个issue,好像是故意的,见issue #32050

【问题讨论】:

    标签: go cgo go-modules


    【解决方案1】:

    Go(在模块模式和 GOPATH 模式下)关注 Go 源代码,并且只会下载 Go 包(可能包含 C 代码),但它从不 em> 在您的系统上安装共享库或执行其他安装工作(如创建符号链接)。

    没有方法你可以说服或强迫go 工具做你认为它应该做的事情。

    以您认为在系统中方便的任何其他方式安装所需的共享对象文件和必要的符号链接。

    【讨论】:

    • 谢谢,但是当我使用 go get 时,我得到了所有的 c 动态库。我想go get或者go module只是下载使用像git这样的vcs来下载包,不关心包是什么,是这样的吗?
    • @lihaichao 我不得不承认我不明白你在问什么。运行 go get 将安装所有 Go 相关的依赖项和 nothing 其他。没有字体,没有共享库,什么都没有。
    • 我以为 go get 会像github.com//test?go-get=1 一样获取,并解析回复的元标记以获取 git url,然后使用 git 克隆包
    • 所以我想 go get 不会关心包里有什么样的文件
    • 去克隆一个 repo。回购中的任何内容都会被克隆。这不能替代将东西安装到您的系统。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 2012-03-21
    • 2014-09-02
    • 2019-08-29
    • 1970-01-01
    • 2016-09-06
    相关资源
    最近更新 更多