我想知道是否可以用Go交叉编译共享库,如果可以的话,应该如何操作?比如说,我有这样的代码:
package main
import "C"
//export DoubleIt
func DoubleIt(x int) int {
return x * 2
}
func main() {}
在 src/doubler/main.go
中。在 Mac 上我可以运行
go build -o libdoubler.dylib -buildmode=c-shared doubler
要获取名为libdoubler.dylib
的共享库。在Linux上类似,只需使用扩展名.so
。
现在我想将Linux作为构建我的库(用于Mac和Windows)的主要平台。我有哪些选择?
将GOOS
设置为darwin
并在Linux上运行上述命令,我得到:
can't load package: package doubler: no buildable Go source files in /home/patrick/Desktop/go/src/doubler
有什么想法吗?
package main
和-buildmode=c-shared
不能同时使用。我认为提问者已经意识到这个问题,因为另一个答案已经指出了这个问题。我已经编辑了我的回答以澄清这一点。非常感谢! - hasanyasinpackage main
没有任何问题。 - topskip