macos:

    go build -ldflags "-w -s" main.go

Windows:

    //64位使用 x86_64-w64-mingw32-gcc
    //可能需要mac 安装 brew install mingw-w64
    //32位
    GOOS=windows GOARCH=386 CGO_ENABLED=1 CC=i686-w64-mingw32-gcc go build -buildmode=c-shared -ldflags "-w -s" -o cShareDll.dll cShareDll.go
    //64位
    GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc go build -buildmode=c-shared -ldflags "-w -s" -o cShareDll.dll cShareDll.go

    //编译macos 64位 so 或者 dylib delphi C/C++ 可以调用
    GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 go build -buildmode=c-shared -ldflags "-w -s" -o cShareDll.so cShareDll.go

    //默认参数是 debug 版,加编译参数 -ldflags "-w -s" 才是 release. -w 为去掉调试信息,-s 为去掉符号表,文件大小会减小。

Linux:

    brew install FiloSottile/musl-cross/musl-cross
    //为了交叉编译基于cgo的项目,需要设置CC或CCX环境变量标志来构建到 x86_64-linux-musl-gcc和x86_64-linux-musl-g++(或其他相关架构)。
    //该环境变量标志应放在GOOS和GOARCH两个环境变量标志之前。
    
    //64位
    CC=x86_64-linux-musl-gcc GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -buildmode=c-shared -o cShareDll.so cShareDll.go

Android:

    //安装 NDK 环境设置  
    //编辑.zshrc 添加以下变量
    export ANDROID_HOME="/Users/M2Macbook/Library/Android"
    export ANDROID_NDK_HOME="$ANDROID_HOME/android-ndk-r21b"
    export PATH="$PATH:/Users/M2Macbook/Library/Android/android-ndk-r21b/toolchains/llvm/prebuilt/darwin-x86_64/bin"
    
    //编译命令
    //armeabi-v7a
    GOOS=android GOARCH=arm CGO_ENABLED=1 CC=armv7a-linux-androideabi21-clang go build -buildmode=c-shared -ldflags "-w -s" -o output/android/armeabi-v7a/cShareDll.so cShareDll.go
    //arm64-v8a
    GOOS=android GOARCH=arm64 CGO_ENABLED=1 CC=aarch64-linux-android21-clang go build -buildmode=c-shared -ldflags "-w -s" -o output/android/arm64-v8a/cShareDll.so cShareDll.go

    //利用strip 工具来减少Android 的 so的大小
    //strip 工具会去掉debug和符号信息
    //测试可以减少到原来的 60%左右工具在 android-ndk 的目录中
    //类似
    cd android-ndk/android-ndk-r12b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/arm-linux-androideabi/bin
    ./strip [yourOSFile]

iOS:

    //编译iOS静态库
    export iOSCFLAGS="-arch arm64 -miphoneos-version-min=9.0 -isysroot "$(xcrun -sdk iphoneos --show-sdk-path) 
    CGO_ENABLED=1 GOARCH=arm64 CC="clang $iOSCFLAGS" go build -x -buildmode=c-archive -ldflags "-w -s" -o ioslib.a cShareDll.go