go build 和 go install 可以添加一个 -buildmode参数来指定文件构件类型

可选项

  • buildmode=archive
    把源文件编译成c语言的静态库文件,包名为main的会被忽略掉
  • buildmode=c-archive
    把源文件编译成c语言可以使用的动态库文件(.so or .dll文件)
  • buildmode=c-shared
  • buildmode=default
    默认编译模式
  • buildmode=shared
    把go文件编译成只允许go文件使用的库文件.他会将非main的package编译成库并且在构建其他程序时可以通过指定-linkshared指定(暂不支持macos).
  • buildmode=exe
  • buildmode=pie
    使程序无法被反编译
  • buildmode=plugin
    1.8推出的特殊编译模式,go文件会被编译成一个go插件,并且可以在运行时动态加载(c无法使用).