go/pkg/tool/linux_amd64/link:运行 gcc 失败:退出状态 1 /usr/bin/ld:找不到 -lgdal

go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1 /usr/bin/ld: cannot find -lgdal

我正在尝试 运行 go build 我的消息来源。

go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/bin/ld: cannot find -lgdal
collect2: error: ld returned 1 exit status

我的 LD_LIBRARY_PATH 变量包含 /home/fzd/project/lib64libgdal.so 文件目录的路径。我的 PKG_CONFIG_PATH 包含 .pc 文件目录的路径,文件内容如下:

prefix=/home/fzd/project
exec_prefix=${prefix}
libdir=${prefix}/lib64
deplibdir=${prefix}/lib64
includedir=${prefix}/include

Name: myLibs
Description: Libs
Requires:
Version: v1.0
Libs: -L${deplibdir} -lgdal
Cflags: -I${includedir}

我不知道要检查哪个变量。一切似乎都很好,有趣的是,当我在其他地方克隆我的 repo 时,我没有问题(相同 LD_LIBRARY_PATH,等等)

有人知道我可以检查什么吗?

我在CentOS7.6上使用go1.11.1。

以下是我为解决这个问题所做的一些事情:

  • rm -rf ~/.cache/go-build:这包含一些构建工件
  • rm -rf ${MyProject}/{bin,pkg} : 同理

尝试yum install glibc-static.x86_64 -y

我遇到过这样的错误

/usr/local/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/bin/ld: cannot find -ldl
/usr/bin/ld: cannot find -lpthread

glibc-static 库修复了它。

以下步骤对我有用:

yum install glibc-static.x86_64 libstdc++-static -y

然后删除上次构建缓存

rm -rf ~/.cache/go-build

然后导出CXXFLAGS

export CXXFLAGS="-stdlib=libstdc++" CC=/usr/bin/gcc CXX=/usr/bin/g++