You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu21.04下Go运行报错collect2: error: ld returned 1 exit status求助

问题定位

从你提供的go env输出可直接确定根因:
你全局Go环境中配置了CGO_LDFLAGS="-L/home/bob/ffmpeg/lib/ -lavcodec -lavformat -lavutil -lswscale -lswresample -lavdevice -lavfilter",且CGO_ENABLED=1处于开启状态。
你提供的最小示例仅用到标准库net/http,未直接调用cgo或FFmpeg逻辑,但Go标准库net/http在CGO开启状态下编译时会触发cgo链接流程,此时链接器会强制加载你全局配置的FFmpeg链接参数,而/home/bob/ffmpeg/lib/路径下不存在对应的FFmpeg库文件,因此抛出找不到库的错误。简单Hello World程序不会触发cgo编译流程,所以运行正常。

解决方案

方案1:临时禁用CGO运行

仅对当前命令关闭CGO,无需修改全局配置:

CGO_ENABLED=0 go run .

方案2:删除全局FFmpeg编译配置

你当前的全局FFmpeg编译参数大概率是之前配置其他项目时写入的,如果不需要全局生效,直接编辑/home/bob/.config/go/env文件,删除CGO_CFLAGS和CGO_LDFLAGS两行配置即可,后续所有Go项目编译都不会强制加载FFmpeg链接参数。

方案3:补全FFmpeg依赖

如果你确实需要全局保留FFmpeg的CGO配置,可通过两种方式补全依赖:

  1. 自行编译FFmpeg,将生成的库文件放入/home/bob/ffmpeg/lib/路径下
  2. 直接安装系统级FFmpeg开发包:
sudo apt install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libswresample-dev libavdevice-dev libavfilter-dev

安装完成后修改CGO_LDFLAGS配置,删除-L/home/bob/ffmpeg/lib/部分,直接调用系统路径的FFmpeg库即可。


内容的提问来源于stack exchange,提问作者Nothingbetter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:36:03