问题
当我发布 go run main.go
我有很多重复的符号错误,比如
duplicate symbol __cgo_c9759b266284_Cfunc_rd_kafka_produce_batch in:
/var/folders/9x/wkfpz7ds6h973089xymk9_mc0000gn/T/go-link-426232578/000015.o
/var/folders/9x/wkfpz7ds6h973089xymk9_mc0000gn/T/go-link-426232578/000032.o
duplicate symbol __cgo_c9759b266284_Cfunc_do_produce in:
/var/folders/9x/wkfpz7ds6h973089xymk9_mc0000gn/T/go-link-426232578/000015.o
/var/folders/9x/wkfpz7ds6h973089xymk9_mc0000gn/T/go-link-426232578/000032.o
duplicate symbol _do_produce in:
/var/folders/9x/wkfpz7ds6h973089xymk9_mc0000gn/T/go-link-426232578/000015.o
/var/folders/9x/wkfpz7ds6h973089xymk9_mc0000gn/T/go-link-426232578/000032.o
ld: 74 duplicate symbols for architecture x86_64
上下文
我的主包导入一个外部包(由我自己拥有,但作为外部包托管)。主包和另一个包都导入一个kafka包(github.com/confluentinc/confluentkafka go/kafka)。这个kafka包要求我安装c库(librdkafka)。这些c库在go编译程序时就包含了,这样一切都可以很好地工作。
我认为出了问题
我认为因为我的主包和外部包都导入了kafka库,所以go认为它需要包含两次c库。我不太了解内部结构-也许它知道-但如果它能检测到库已经被包括在内,这样就不会发生这种重复符号错误,那就太好了。
我为什么这么想
如果我将外部包复制到我的主包中并在那里使用它而不是导入外部包,我不会得到任何错误。
有谁熟悉这个问题并有解决方法吗?
暂无答案!
目前还没有任何答案,快来回答吧!