首页 > 解决方案 > 使用静态 c 库编译 go

问题描述

我正在尝试编译 Go,它包含运行它所需的所有库。我正在尝试在 lambda 中运行 go 二进制文件,因此我需要在构建它(在 linux 上)时添加一些 C 库(我认为),但是当我这样做时,我得到了这个错误:

[ec2-user@ip- src]$ go build -tags static --ldflags '-extldflags "-static -lpthread -lxml2 -lz -lm -llzma -lc"' main.go
# command-line-arguments
/usr/local/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -ldl
/usr/bin/ld: cannot find -lpthread
/usr/bin/ld: cannot find -lrt
/usr/bin/ld: cannot find -lpthread
/usr/bin/ld: cannot find -lpthread
/usr/bin/ld: cannot find -lxml2
/usr/bin/ld: cannot find -lz
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -llzma
/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status

---EDIT00000

我做了一个快速ldconfig搜索?例如,看看这个……这些是我需要的吗?

ldconfig -p | grep -e xml2 -e pthread -e lzma -e dl 
    libxml2.so.2 (libc6,x86-64) => /lib64/libxml2.so.2
    libreadline.so.6 (libc6,x86-64) => /lib64/libreadline.so.6
    libpthread.so.0 (libc6,x86-64, OS ABI: Linux 2.6.32) => /lib64/libpthread.so.0
    liblzma.so.5 (libc6,x86-64) => /lib64/liblzma.so.5
    libhandle.so.1 (libc6,x86-64) => /lib64/libhandle.so.1
    libgpgme-pthread.so.11 (libc6,x86-64) => /lib64/libgpgme-pthread.so.11
    libdl.so.2 (libc6,x86-64, OS ABI: Linux 2.6.32) => /lib64/libdl.so.2
    libdl.so (libc6,x86-64, OS ABI: Linux 2.6.32) => /lib64/libdl.so

标签: go

解决方案


推荐阅读