这两天需要查看一个beego项目,用到了mattn/go-oci8。但是本身不熟悉go以及环境问题,花了我2天时间各种查解决方案,google还好点(最终解决了问题),百度不摆了,这里记录一下。 1.由于用到了Oracle,我需要下载intantclient(版本最好也要跟数据库对应),注意x64或者x86要对应。 2.下载对应客户端的SDK,放到根目录。
3.将client路径放入PATH环境变量中
1error adding symbols: File in wrong format
2 C:/MinGW/mingw64/bin/../bin/ld.exe: cannot find -loci
3mattn\go-oci8\oci8.go:4:10: fatal error: oci.h: No such file or directory
由于我不是很熟悉C编译那一套,我说说我尝试的各种方法。
1.C:\Go_WorkSpace\src\github.com\mattn\go-oci8目录下有一个oci8.pc,请根据版本配置无误(ps:好像11.2跟12.1的版本,libdir路径不一样,请大家查一下),并且创建新的环境变量PKG_CONFIG_PATH,根据自己的环境,加入上面oci8的路径;pkg-config --cflags --libs oci8看下cflag、libs是否与配置的相同。
2.我的win是64位,之前用的gcc是TDM-GCC-64,始终报第一条错误,我决定换成MinGW64,网上下载安装包或者编译好的包都行(为什么会换呢?https://stackoverflow.com/questions/35004744/golang-oci8-error-adding-symbols-file-in-wrong-format)。
在环境变量中删除之前的TDM-GCC-64\bin,添加新的MINGW64\bin. 执行where gcc,如果只有一个,mingw64\bin\gcc.exe,说明对了
最后,好像还有几个错来着,但是搞忘了。如果大家仍没有解决,可以@我,看看有没有我碰到过而且解决的,以上。