使用下面命令将project编译成动态库(-ldflags "-s -w" -x -v 可以不使用) root@working-srv:/data/code/src# go install -x -v -ldflags "-s -w" -buildmode=shared -linkshared project 使用下面命令编译main函数: go build -ldflags "-s -w" -linkshared -o server workspac 编译之后产看依赖: root@working-srv:/data/code/src# ldd server linux-vdso.so.1 => (0x00007fff79dc6000) libruntime,sync-atomic.so => /data/go/pkg/linux_amd64_dynlink/libruntime,sync-atomic.so (0x00007fb56d2e4000) libproject.so => /data/code/pkg/linux_amd64_dynlink/libproject.so (0x00007fb56c7c3000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb56c3f8000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb56c1da000) /lib64/ld-linux-x86-64.so.2 (0x00007fb56d6c7000) 至此动态库就能使用了.注意可能会报错runtime.a atomic 什么之类的错误 go install -buildmode=shared runtime sync/atomic 使用此命令解决. 编译动态库的时候project目录也是不可以删除的,否侧会报错误找不到包