问题陈述:
构建基本 Go使用静态编译时,与 Oracle 数据库的片段接口失败命令:
CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static" ${MAIN_SRC}
编译错误表示找不到Oracle库-lclntsh。尽管尝试设置环境变量并安装 Oracle 数据库包中的附加文件,静态编译仍然失败。
解决方案:
生成静态库:
Oracle 通常不附带静态库libclntst.a。要生成它,请运行以下命令:
$ORACLE_HOME/bin/genclntst
链接应用程序:
将您的应用程序与生成的静态库链接:
CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static -L/usr/lib/oracle/12.1/client64/lib -lclntsh -lclntst" ${MAIN_SRC}
处理缺失符号(可选):
如果仍然缺少符号,请使用 nm 工具来识别它们。然后,根据需要添加其他静态库来解决依赖关系。
附加说明:
以上是如何在 Linux 上将 Go CGO 可执行文件与 Oracle 库静态链接?的详细内容。更多信息请关注PHP中文网其他相关文章!