3

我有一个用 Golang 编写的小应用程序,它使用 Oci8 进行 Oracle 数据库连接。当我尝试在另一台 Macbook(相同的操作系统版本)上运行我的 Macbook 上构建的二进制文件时,它失败并出现以下错误:

dyld: Library not loaded: @rpath/libclntsh.dylib.12.1
  Referenced from: /Users/{username_masked}/Documents/gitRepo/UserRevoke/./user_revoke
  Reason: image not found
Abort trap: 6

我试图用静态库编译为:

go build -a -ldflags '-extldflags "-static"' .

它失败并出现以下错误:

/usr/local/go/pkg/tool/linux_amd64/link:运行 gcc 失败:退出状态 1 /usr/bin/ld:找不到 -lclntsh collect2:ld 返回 1 退出状态

然后我尝试按照如何使用 cgo 在 go 中静态链接 ac 库中的说明进行交叉编译?

那是,

CGO_ENABLED=0 go build -a -installsuffix cgo -ldflags '-s' user_revoke.go

但是,它失败并出现以下错误:

# github.com/mattn/go-oci8
/usr/local/go/src/github.com/mattn/go-oci8/oci8_go18.go:13:10: undefined: OCI8Conn

简而言之,我尝试了多个论点。但是,它们要么提供动态链接的二进制文件,要么根本无法编译。

我什至没有尝试在多个操作系统之间分发它。我想要做的是为操作系统构建这个包,比如 Mac,这样它就可以在任何 Mac 机器上运行,而无需显式安装库。

4

0 回答 0