先挖个坑啊。今天的文章只是简单了写了一下如何把Goland程序跑起来。
随着现在政府国产化的要求越来越,现在的安可项目慢慢地深入了,之前只是要求客户端国产化,比如浏览器、办公电脑、数据库。现在到服务器这一层也要进行国产化。
国产服务器一般搭载Linux操作系统,而且服务器硬件基本上是以Arm为主。
公司今年采购了一台银河麒麟服务,上面已安装好了麒麟操作系统
下面开始
如何编写就省过了。这块可以省略了。
我的开发环境是Windows,要编译Arm的程序,必进行进行交叉编译。
运行参数:
CGO_ENABLED=0 GOOS=linux GOARCH=arm go build main.go
直接把程序丢到服务器上,运行main。显示成功
很不幸,我的程序用到了Oracle Client驱动,是CGO的库,没法子进行交叉编译,只能把源码丢到服务器上编译。
安装Goland SDK直接用wget 下载 Golang https://studygolang.com/dl/golang/go1.16.6.linux-amd64.tar.gz
放到 /usr/local 目录
解压后 配置环境变量
vi /etc/profile
加入
export PATH=$PATH:/usr/local/go/bin
source /etc/profile
生配置生效
运行go version看是否成功
最后修改一下代理地址
go env -w GOPROXY=https://goproxy.cn调试Oracle 环境
下载 arm版本的 oracle client
https://download.oracle.com/otn_software/linux/instantclient/191000/instantclient-basic-linux.arm64-19.10.0.0.0dbru.zip
/usr/local/oracle
解压之后进行配置 /etc/profile
export ORACLE_HOME=/usr/local/oracle export TNS_ADMIN=$ORACLE_HOME/network/admin export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export LD_LIBRARY_PATH=$ORACLE_HOME export PATH=$ORACLE_HOME:$PATH
运行让配置生效
source /etc/profile上传代码进行编译
我这里手动上传代码
运行 go build 进行编译,我这里就出现个问题,由于之前,我的oracle驱动用的是oci8,这个驱动很麻烦,还有下载pkg-config,后来换成godror,只要client就可以了
编译成功,也能跑起来了
测试数据库连接发现一个问题,提示缺少 /usr/local/oracle/lib/libclntsh.so
但我的目录下是没有lib文件夹的,网上有资料可以用软链接。我直接生硬地建一个文件夹,再把文件复制一次。
再运行提示少了libaio.so 库,直接安装一下这个库即可。 apt-get install libaio*
最后大功告成,可以运行了。
详细的测试我还没有走过。先留一个坑。



