运行“ luarocks install luasql-odbc”时出现错误“找不到-lodbc”

时间:2019-06-02 16:47:22

标签: lua odbc

我正在尝试为Lua安装ODBC驱动程序(?)。我正在运行Windows 10,并按照http://www.thijsschreijer.nl/blog/?p=863上的说明进行操作 只要命令“ lua -l socket”

这是我的命令和结果的屏幕副本

  

C:\ Program Files(x86)\ LuaRocks> luarocks安装luasql-odbc
  安装https://luarocks.org/luasql-odbc-2.4.0-1.src.rock

     

C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / luasql.o -IC:\ Program Files   (x86)\ Lua \ 5_3 \ include src / luasql.c -Ic:/ mingw / include
  C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / ls_odbc.o -IC:\ Program Files   (x86)\ Lua \ 5_3 \ include src / ls_odbc.c -Ic:/ mingw / include
  C:\ MinGW \ bin \ gcc.exe-共享-o luasql / odbc.dll src / luasql.o   src / ls_odbc.o -Lc:/ mingw -lodbc C:\ Program档案   (x86)\ Lua \ 5_3 \ bin / lua53.dll -lm
  c:/ mingw / bin /../ lib / gcc / mingw32 / 8.2.0 /../../../../ mingw32 / bin / ld.exe:   找不到-lodbc collect2.exe:错误:ld返回1个退出状态

     

错误:构建错误:编译模块luasql / odbc.dll失败

由于我是C程序等整个概念的新手,所以很可能是我缺少了一些专家会说的“嗯,显然他已经做到了这一点,或者其他”。不要打赌!

我下载了luasql-master.zip,但不确定是否需要将其解压缩/复制到特定的luarocks(?)库。

我应该指出,我可以使用Reginald Rexx和ODBC在同一台计算机上访问DB2 Express数据库,因此ODBC可用性不应该是一个问题,但是也许我确实需要将一些文件复制到某个地方或其他。

任何建议都值得赞赏(我一直在谷歌搜索,直到我的眼睛流血为止,但是人们附加的所有问题似乎都与他们在安装相关的LuaSQL驱动程序后访问任何数据库有关)。

经过更多实验后添加,我尝试使用--verbose选项运行安装。这些是相关的(?)结果(我的完整输出保存在了桌面上)

os.execute:C:和cd“ C:\ Users \ Michael \ AppData \ Local \ Temp \ luarocks_luasql-odbc-2.4.0-1-209 \ luasql”&“ C:\ Program Files(x86)\ LuaRocks / tools / mkdir.exe“ -p” luasql“ 结果:3   1(布尔值):true   2(字符串):退出   3(数字):0 C:\ MinGW \ bin \ gcc.exe-共享-o luasql / odbc.dll src / luasql.o src / ls_odbc.o -Lc:/ mingw -lodbc c:\程序文件(x86)\ lua \ 5_3 \ bin /lua53.dll -lm

os.execute:C:和cd“ C:\ Users \ Michael \ AppData \ Local \ Temp \ luarocks_luasql-odbc-2.4.0-1-209 \ luasql”&C:\ MinGW \ bin \ gcc.exe -共享的“ -o”“ luasql / odbc.dll”“ src / luasql.o”“ src / ls_odbc.o”“ -Lc:/ mingw”“ -lodbc”“ c:\ program files(x86)\ lua \ 5_3 \ bin \ lua53.dll“” -lm“ c:/ mingw / bin /../ lib / gcc / mingw32 / 8.2.0 /../../../../ mingw32 / bin / ld.exe:找不到-lodbc collect2.exe:错误:ld返回1退出状态 结果:3   1(无):无   2(字符串):退出   3(数字):1

错误:构建错误:编译模块luasql / odbc.dll失败

虽然我认为Val非常适合我,但我不禁以为他(?)偏离了他关于odbc.dll的评论。我的印象是安装过程中将创建odbc.dll(或者我错了吗?)。我的感觉是MinGw中可能缺少某些东西?

1 个答案:

答案 0 :(得分:0)

经过大量的实验,我在https://www.progress.com/tutorials/odbc/connecting-to-hive-from-lua-using-an-odbc-driver找到了东西。

阅读此书后,我想到了“到底什么”,并尝试了以下操作:-

  

家禽安装odbc

这是我的打印输出

  

C:>羽扇安装odb
  安装https://luarocks.org/odbc-0.3.1-1.src.rock

     

C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / l52util.o -Ic:\ program文件   (x86)\ lua \ 5_3 \ include src / l52util.c -DUNIXODBC -DLUAODBC_EXPORTS   -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / lcnn.o -Ic:\程序文件(x86)\ lua \ 5_3 \ include src / lcnn.c -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / lenv .o -ic:\ program files(x86)\ lua \ 5_3 \ include src / lenv.c   -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / lerr.o -Ic:\ program文件   (x86)\ lua \ 5_3 \ include src / lerr.c -DUNIXODBC -DLUAODBC_EXPORTS   -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / libopt.o -Ic:\程序文件(x86)\ lua \ 5_3 \ include src / libopt.c -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / lodbc .o -IC:\程序文件(x86)\ lua \ 5_3 \ include src / lodbc.c   -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / lstmt.o -Ic:\ program文件   (x86)\ lua \ 5_3 \ include src / lstmt.c -DUNIXODBC -DLUAODBC_EXPORTS   -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / lval.o -Ic:\程序文件(x86)\ lua \ 5_3 \ include src / lval.c -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / parlist .o -ic:\ program files(x86)\ lua \ 5_3 \ include src / parlist.c   -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / utils.o -Ic:\ program文件   (x86)\ lua \ 5_3 \ include src / utils.c -DUNIXODBC -DLUAODBC_EXPORTS   -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -shared -o odbc / core.dll src / l52util.o src / lcnn.o src / lenv .o src / lerr.o src / libopt.o   src / lodbc.o src / lstmt.o src / lval.o src / parlist.o src / utils.o   -lc:/ external -lodbc32 -lodbccp32 c:\ program files(x86)\ lua \ 5_3 \ bin / lua53.dll -lm odbc 0.3.1-1现在已安装在   c:\ program files(x86)\ lua \ 5_3 \(许可证:MIT / X11)

好吧,那真是出乎意料!!!
在下一个测试中,让我们看看是否可以从Zerobrane内部通过ODBC连接到DB2 Express。

这是我的代码

odbc = require "odbc"
dbassert = odbc.assert
print("About to connect")
cnn = odbc.connect('DB2 Express', 'windows_userid', 'windows_pw')
if cnn == nil then
  print("Could not connect")
  return
else  
  print("Successful connection")
end

stmt = cnn:execute('SELECT count(*) FROM windows_userid.act')
print("After execute and select")

stmt:foreach(function(f1)
  i = i or 0
  i = i + 1
  print("After foreach i ",i)
  print("count ", f1, i);

end)
assert(stmt:closed()) -- foreach close cursor
assert(not stmt:destroyed()) -- statement valid  

...以及脚本的输出

  

关于连接
  连接成功
  执行后选择
  经过foreach i 1
  数18 1

现在可以尝试学习Lua,然后应用所有这些内容了,但是最后,我在路上!