Golang1.7动态库的使用,C和Golang的动态库以及使用
使用下面命令将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目录也是不可以删除的,否侧会报错误找不到包