go - go 1.10:不能在共享库中隐式包含 runtime/cgo
问题描述
我正在尝试执行go build -buildmode=shared -linkshared test
,但出现错误:
go 1.10: cannot implicitly include runtime/cgo in a shared library
我在那个包里只有一个文件
lib.go
package test
import "fmt"
func Hello() {
fmt.Println("Hi")
}
我在运行go1.10.4 linux/amd64的 linux 机器上
解决方案
这个过程对我有用:
$ docker run -it golang /bin/sh
# cd src
# mkdir test
# cat << EOF > test/lib.go
> package test
import "fmt"
func Hello() {
fmt.Println("Hi")
}> > > >
> EOF
# cat test/lib.go
package test
import "fmt"
func Hello() {
fmt.Println("Hi")
}
# go install -buildmode=shared -linkshared std
# ldd /usr/local/go/pkg/linux_amd64_dynlink/libstd.so
linux-vdso.so.1 (0x00007fff4093d000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3454de5000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f3454dc4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3454c03000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3457514000)
# go install -buildmode=shared -linkshared test
# ldd /go/pkg/linux_amd64_dynlink/libtest.so
linux-vdso.so.1 (0x00007ffddbbeb000)
libstd.so => /usr/local/go/pkg/linux_amd64_dynlink/libstd.so (0x00007f82bc8cf000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f82bc70a000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f82bc705000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f82bc6e4000)
/lib64/ld-linux-x86-64.so.2 (0x00007f82bf0fc000)
#
推荐阅读
- c# - 未找到提供 hostxfr.dll 的独立 .net core 3.1 应用程序
- wagtail - 错误的 FieldRowPanel
- javascript - 使用 JS .getElementsByClassName 更改文本:类名相同,我只想更改一个的文本
- c - 如何使用 Atoi 函数将字符串转换为 int?
- python - 我似乎无法掌握如何在 python 中使用径向基函数内核进行分类任务
- go - gzip 请求体自动解压
- ios - 为什么可以选择声明 Swift 包的产品是动态的还是静态的?
- bash - tar & split 远程文件在本地保存输出从输出中删除“tar:从成员名称中删除前导 `/'”消息
- javascript - 如何通过使用 ID 单击删除按钮来删除帖子?
- xml - Web 服务生成错误的 xml:十六进制值 0x00 是无效字符错误