突然,Go 语言 Google Cloud API 到语音转文本不起作用!/lib64/libc.so.6:未找到版本"GLIBC_2.32"



我写了一个Go program,它需要一个录音文件,并提交它的前59秒(为了完全避免使用谷歌云存储的东西,这是不切实际的,在大量的服务器上使用)到谷歌语音到文本API。它在Ubuntu、CentOS6和CentOS7上运行良好,直到这个周末。我刚刚升级了一个运行Ubuntu 22.04的系统。我不得不修改代码。go build运行正常。但是当我在CentOS6或centos7上运行它时:

[murf@0b06ac9134ab stt3]$ ./stt3
./stt3: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by ./stt3)
./stt3: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./stt3)
[murf@0b06ac9134ab stt3]$ 

在centOS6和centos7上安装了golang,在这些机器上本地构建了exec,结果相同。

我做了一些研究,看到glibcgolang的问题,但只有在需要它的一些功能的代码中。重新编译以强制使用旧版本的glibc似乎是一个可行的选择。

在我看来,谷歌更新了Go API libraries,并使他们依赖于glibc....的新版本摆脱这种依赖的唯一方法是在CentOS6(最老的glibc)上重新编译所有的Google Cloud API Go库源。可能还要在centOS7上重新编译,谁知道呢。Go的可移植性就到此为止了。

所以,问题是:

  • 哪里是谷歌云API Go库的来源?
  • 为什么这么难找?它们是私有的吗?
  • 我应该放弃谷歌的东西,并转移到细微差别或其他任何?
  • 我怎么报告他们代码中的bug ?

由于glibc的动态链接,尝试构建静态链接版本:

go build -tags netgo,osusergo .

使用-tags osusergo,netgo强制不依赖库的静态构建。

相关内容

最新更新