登录
首页 >  Golang >  Go问答

go 1.10:无法在共享库中隐式包含运行时/cgo

来源:stackoverflow

时间:2024-04-11 20:15:38 148浏览 收藏

哈喽!今天心血来潮给大家带来了《go 1.10:无法在共享库中隐式包含运行时/cgo》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

问题内容

我正在尝试执行 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 计算机上


解决方案


问题是我没有在任何地方导入 cgo 。因此,这意味着不会导出任何函数,这意味着没有任何内容可以构建到库中。

它对我来说是这样的过程:

$ 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)
#

今天关于《go 1.10:无法在共享库中隐式包含运行时/cgo》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>