20130428记录一下go-sqlite的小问题

fengbangyue · · 2561 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

   基于beego写了一个简单的答题系统,用64位编译器编译好好的,可放到32位机器上运行的时候跑不起来,于是又得编程32位。

   下了32位编译器后,把工程搬过去,重编译,谁知道提示一对错误,都是sqlite.

 # command-line-arguments
    D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text)
    : __divdi3: not defined
    D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text)
    : __moddi3: not defined
    D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text)
    : __divdi3: not defined
    D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text)
    : __divdi3: not defined
    D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text)
    : __divdi3: not defined
    D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text)
    : __divdi3: not defined
    D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text)
    : __moddi3: not defined
    D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text)
    : __divdi3: not defined
    D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text)
    : __moddi3: not defined
    D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text)
.。。。还有很多错误没列出来,网上找了一番。

http://studygolang.com/topics/96  这个链接说需要这样做,不知为何,照加上,然后错误变为:

# command-line-arguments
W:\3rdpart\pkg\windows_386/github.com/gwenn/gosqlite.a(sqlite3.o)(.text): Interl
ockedCompareExchange: not defined
W:\3rdpart\pkg\windows_386/github.com/gwenn/gosqlite.a(sqlite3.o)(.text): Interl
ockedCompareExchange: not defined
W:\3rdpart\pkg\windows_386/github.com/gwenn/gosqlite.a(sqlite3.o)(.text): _local
time32: not defined
_localtime32(0): not defined
InterlockedCompareExchange(0): not defined
其中的错误是一样,只是我使用的是 github.com\mattn\go-sqlite3 库。

 实在不得法,网友说 在sqlite.go中加上这个:https://groups.google.com/forum/#!msg/golang-china/EPekDegsHcc/uyhRoaBFNqkJ

#cgo LDFLAGS: -lgcc_s -lkernel32 -lmsvcr100
#cgo CFLAGS: -mno-stack-arg-probe
#include "sqlite3.h"

就好了。果然,对cgo的编译规则不熟悉,只有先记录了。

go build 64位的默认GOARCH是 amd64, 要切换成32位需要设置GOARCH=386,但是 由于64位的编译器没有带8g工具,所以编译的时候会提示:

找不到 8g. 所以用重下了32位编译器



有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:fengbangyue

查看原文:20130428记录一下go-sqlite的小问题

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2561 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传