您面临的问题实际上与编译共享库或可执行文件无关,而与使用cgo并尝试交叉编译有关。(不过,如果您要的是库而不是可执行文件,则包名称不应为
main。)
交叉编译时,默认情况下cgo是禁用的。如果添加环境变量
CGO_ENABLED=1,那么您的示例将起作用:
CGO_ENABLED=1 GOOS=darwin go build -o libdoubler.dylib -buildmode=c-shared doubler
请记住,在交叉编译时使用cgo会很麻烦。您将需要确保目标平台上的C库已在主机上准备好。如果没有必要,请远离cgo。如果需要,则可以考虑在目标计算机上进行编译,而不是使用cgo进行交叉编译的维护。



