Ошибка "не удается найти -lodbc" при запуске "luarocks install luasql-odbc" - PullRequest
1 голос
/ 02 июня 2019

Я пытаюсь установить драйвер ODBC (?) Для Lua. Я использую Windows 10 и следую инструкциям на http://www.thijsschreijer.nl/blog/?p=863 насколько команда "lua -l socket"

Вот экранная копия моей команды и результаты

C: \ Program Files (x86) \ LuaRocks> luarocks install 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: \ Программные файлы (x86) \ Lua \ 5_3 \ include src / luasql.c -Ic: / mingw / include
C: \ MinGW \ bin \ gcc.exe -O2 -c -o src / ls_odbc.o -IC: \ Программные файлы (x86) \ Lua \ 5_3 \ include src / ls_odbc.c -Ic: / mingw / include
C: \ MinGW \ bin \ gcc.exe -shared -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 / бен /../ Библиотека / GCC / mingw32 / 8.2.0 /../../../../ mingw32 / бен / ld.exe: не удается найти -lodbc collect2.exe: ошибка: ld вернул 1 состояние выхода

Ошибка: ошибка сборки: сбой модуля компиляции luasql / odbc.dll

Поскольку я новичок во всей концепции программ на C и т. Д., Вполне возможно, что мне не хватает чего-то, что эксперты скажут: «Ну, ЯВНО, он сделал это, то или другое». Не ставьте на это !!

Я скачал luasql-master.zip, но не уверен, нужно ли мне распаковать / скопировать его в определенную библиотеку luarocks (?).

Я должен указать, что я могу получить доступ к базе данных DB2 Express на том же компьютере, используя Reginald Rexx и ODBC, поэтому наличие 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 (логическое): правда 2 (строка): выход 3 (число): 0 C: \ MinGW \ bin \ gcc.exe -shared -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 -shared "-o" "luasql / odbc.dll" "src / luasql.o" "src / ls_odbc.o" "-Lc: / mingw" "-lodbc" "c: \ программные файлы (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

Хотя я предполагаю, что Вэл гораздо более квалифицирован, чем я, я не могу не думать, что он (?) Не в курсе, так как его комментарий об отсутствии odbc.dll отсутствует. Мое впечатление состоит в том, что odbc.dll будет создан в результате установки (или я ошибаюсь?). Мне кажется, что в MinGw чего-то не хватает, возможно ???

1 Ответ

0 голосов
/ 04 июня 2019

После множества экспериментов я нашел что-то в https://www.progress.com/tutorials/odbc/connecting-to-hive-from-lua-using-an-odbc-driver.

Прочитав это, я подумал: "Какого черта" и попробовал следующее: -

luarocks устанавливает odbc

Это была моя распечатка

C:> luarocks устанавливает odb
Установка https://luarocks.org/odbc-0.3.1-1.src.rock

C: \ MinGW \ bin \ gcc.exe -O2 -c -o src / l52util.o -Ic: \ программные файлы (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 \ gccv-s2 .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-program :I: (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 -2-sc .o -Ic: \ program files (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-файлы: программы (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 -Oc - o2 .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 -Ic: (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 .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)

Ну, это было неожиданно !!!.
Следующий тест, давайте посмотрим, смогу ли я подключиться к DB2 Express через ODBC из Zerobrane.

Вот мой код

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 я 1
количество 18 1

Теперь, чтобы действительно попытаться выучить Lua, а затем применить все это, но НАКОНЕЦ, я уже в пути !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...