Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OSS Gate Workshop: Tokyo: 2017-09-30: kono: ruby-odbc (for ruby 2.4 windows): Work log #575

Closed
kono opened this issue Sep 30, 2017 · 31 comments

Comments

@kono
Copy link
Contributor

kono commented Sep 30, 2017

This is a work log of a "OSS Gate workshop".
"OSS Gate workshop" is an activity to increase OSS developers.
Here's been discussed in Japanese. Thanks.

作業ログ作成時の説明

以下のテンプレートを埋めてタイトルに設定します。埋め方例はスクロールすると見えてきます。

OSS Gate Workshop: ${LOCATION}: ${YEAR}-${MONTH}-${DAY}: ${アカウント名}: ${OSS名}: Work log

タイトル例↓:

OSS Gate Workshop: Tokyo: 2017-01-16: kou: Rabbit: Work log

OSS Gateワークショップ関連情報

  • スライド:ワークショップの進行に使っているスライドがあります。
  • チャット:OSS開発に関することならなんでも相談できます。ワークショップが終わった後もオンラインで相談しながら継続的にOSSの開発に参加しましょう!
  • シナリオ:ワークショップの目的・内容・進め方の詳細が書いています。
  • 過去のビギナーの作業ログ:他の人の作業ログから学べることがいろいろあるはずです。
@swamp09
Copy link
Member

swamp09 commented Sep 30, 2017

沼田と申します、本日はよろしくお願いします!

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

ruby-odbcのgemをruby 2.4(Windows)で動かしたい。動かせない場合はどこで詰まったかを明らかにして問題を報告する。のが今日の目標。

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

動作確認する環境を用意する。
ruby2.4をインストール。
ruby installerのサイトからダウンロードする

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

MSYS2も併せてインストールする。
https://rubyinstaller.org/downloads/
よりリンクをクリックして
http://www.msys2.org/
http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20161025.exe
よりダウンロードする。

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

ruby2.4.2をインストールする。
C:\tools\Ruby24-x64にインストールした。
インストーラの最後にMSYS2のインストールを続けて行えるオプションがあった。

 _____       _           _____           _        _ _         ___
|  __ \     | |         |_   _|         | |      | | |       |__ \
| |__) |   _| |__  _   _  | |  _ __  ___| |_ __ _| | | ___ _ __ ) |
|  _  / | | | '_ \| | | | | | | '_ \/ __| __/ _` | | |/ _ \ '__/ /
| | \ \ |_| | |_) | |_| |_| |_| | | \__ \ || (_| | | |  __/ | / /_
|_|  \_\__,_|_.__/ \__, |_____|_| |_|___/\__\__,_|_|_|\___|_||____|
                    __/ |           _
                   |___/          _|_ _  __   | | o __  _| _     _
                                   | (_) |    |^| | | |(_|(_)\^/_>

   1 - MSYS2 base installation
   2 - MSYS2 system update
   3 - MSYS2 and MINGW development toolchain

Which components shall be installed? If unsure press ENTER [1,2,3]

MSYS2 seems to be unavailable
Download http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20161025.exe
  to C:\Users\hiros\AppData\Local\Temp/msys2-x86_64-20161025.exe
Downloading msys2-x86_64-20161025.exe (100%)
Verify integrity of msys2-x86_64-20161025.exe ... OK
Run the MSYS2 installer ...
> C:\Users\hiros\AppData\Local\Temp/msys2-x86_64-20161025.exe

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

> C:\Users\hiros\AppData\Local\Temp/msys2-x86_64-20161025.exe

でインストーラのダイアログが出たので
C:\Tools\msys64にインストール

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

引き続きupdateファイルがいろいろ自動でインストールされている。

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

file updateが終わったらコマンドプロンプトのウィンドウが自動的に閉じたらしい。
ruby 2.4.2がインストールされていることは確認できた。
MSYS2もインストールされたと思うが確認する方法が判らない。

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

http://www.msys2.org/
の内容を読んでインストールの確認方法を調べる。

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

kono@DESKTOP-U4TV2CA MINGW64 ~
$ pacman -Syu
:: パッケージデータベースの同期中...
 mingw32 は最新です
 mingw64 は最新です
 msys は最新です
:: Starting core system upgrade...
 何も行うことがありません
:: システム全体の更新を開始...
 何も行うことがありません

kono@DESKTOP-U4TV2CA MINGW64 ~
$ pacman -Su
:: Starting core system upgrade...
 何も行うことがありません
:: システム全体の更新を開始...
 何も行うことがありません

たぶん問題なさそう。

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

これからgem ruby-odbcのインストールを行う。

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

gemのインストールでエラー。

C:\Users\hiros>gem install ruby-odbc
Fetching: ruby-odbc-0.99998.gem (100%)
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions.  This could take a while...
ERROR:  Error installing ruby-odbc:
        ERROR: Failed to build gem native extension.

    current directory: C:/Tools/Ruby24-x64/lib/ruby/gems/2.4.0/gems/ruby-odbc-0.99998/ext
C:/Tools/Ruby24-x64/bin/ruby.exe -r ./siteconf20170930-2024-zveo4g.rb extconf.rb
checking for version.h... no
checking for sql.h... yes
checking for sqlext.h... yes
checking for SQLTCHAR in windows.h,sqltypes.h... yes
checking for SQLLEN in windows.h,sqltypes.h... yes
checking for SQLULEN in windows.h,sqltypes.h... yes
checking for odbcinst.h... yes
checking for SQLROWOFFSET in windows.h,sqltypes.h... yes
checking for odbcinst.h... yes
checking for SQLROWSETSIZE in windows.h,sqltypes.h... yes
checking for odbcinst.h... yes
checking for () in -lodbc32... no
checking for () in -lodbccp32... no
checking for () in -luser32... no
creating Makefile

current directory: C:/Tools/Ruby24-x64/lib/ruby/gems/2.4.0/gems/ruby-odbc-0.99998/ext
make "DESTDIR=" clean

current directory: C:/Tools/Ruby24-x64/lib/ruby/gems/2.4.0/gems/ruby-odbc-0.99998/ext
make "DESTDIR="
generating odbc-x64-mingw32.def
compiling init.c
compiling odbc.c
In file included from C:/Tools/Ruby24-x64/include/ruby-2.4.0/ruby/win32.h:41:0,
                 from C:/Tools/Ruby24-x64/include/ruby-2.4.0/ruby/defines.h:243,
                 from C:/Tools/Ruby24-x64/include/ruby-2.4.0/ruby/ruby.h:36,
                 from C:/Tools/Ruby24-x64/include/ruby-2.4.0/ruby.h:33,
                 from odbc.c:21:
C:/Tools/msys64/mingw64/x86_64-w64-mingw32/include/winsock2.h:15:2: warning: #warning Please include winsock2.h before windows.h [-Wcpp]
 #warning Please include winsock2.h before windows.h
  ^~~~~~~
linking shared-object odbc.so
odbc.o:odbc.c:(.text+0x1ee): undefined reference to `SQLError'
odbc.o:odbc.c:(.text+0x748): undefined reference to `SQLExecute'
odbc.o:odbc.c:(.text+0x818): undefined reference to `SQLDisconnect'
odbc.o:odbc.c:(.text+0x1950): undefined reference to `SQLFetchScroll'
odbc.o:odbc.c:(.text+0x1968): undefined reference to `SQLFetch'
odbc.o:odbc.c:(.text+0x1990): undefined reference to `SQLExecDirect'
odbc.o:odbc.c:(.text+0x19b0): undefined reference to `SQLPrepare'
odbc.o:odbc.c:(.text+0x19ff): undefined reference to `SQLTables'
odbc.o:odbc.c:(.text+0x1a4f): undefined reference to `SQLColumns'
odbc.o:odbc.c:(.text+0x1a8e): undefined reference to `SQLPrimaryKeys'
odbc.o:odbc.c:(.text+0x1ade): undefined reference to `SQLStatistics'
odbc.o:odbc.c:(.text+0x1afc): undefined reference to `SQLGetTypeInfo'
odbc.o:odbc.c:(.text+0x1b71): undefined reference to `SQLForeignKeys'
odbc.o:odbc.c:(.text+0x1bae): undefined reference to `SQLTablePrivileges'
odbc.o:odbc.c:(.text+0x1bee): undefined reference to `SQLProcedures'
odbc.o:odbc.c:(.text+0x1c3f): undefined reference to `SQLProcedureColumns'
odbc.o:odbc.c:(.text+0x1c97): undefined reference to `SQLSpecialColumns'
odbc.o:odbc.c:(.text+0x1ce7): undefined reference to `SQLDriverConnect'
odbc.o:odbc.c:(.text+0x1d2e): undefined reference to `SQLConnect'
odbc.o:odbc.c:(.text+0x1de1): undefined reference to `SQLReadFileDSN'
odbc.o:odbc.c:(.text+0x1f0d): undefined reference to `SQLWriteFileDSN'
odbc.o:odbc.c:(.text+0x1f84): undefined reference to `SQLEndTran'
odbc.o:odbc.c:(.text+0x22c1): undefined reference to `SQLCancel'
odbc.o:odbc.c:(.text+0x23ae): undefined reference to `SQLDescribeParam'
odbc.o:odbc.c:(.text+0x24da): undefined reference to `SQLNumParams'
odbc.o:odbc.c:(.text+0x2eda): undefined reference to `SQLAllocStmt'
odbc.o:odbc.c:(.text+0x2fb9): undefined reference to `SQLSetEnvAttr'
odbc.o:odbc.c:(.text+0x300b): undefined reference to `SQLGetEnvAttr'
odbc.o:odbc.c:(.text+0x30de): undefined reference to `SQLRowCount'
odbc.o:odbc.c:(.text+0x4c25): undefined reference to `SQLColAttributes'
odbc.o:odbc.c:(.text+0x4cc0): undefined reference to `SQLColAttributes'
odbc.o:odbc.c:(.text+0x4d58): undefined reference to `SQLColAttributes'
odbc.o:odbc.c:(.text+0x4dd7): undefined reference to `SQLColAttributes'
odbc.o:odbc.c:(.text+0x4e54): undefined reference to `SQLColAttributes'
odbc.o:odbc.c:(.text+0x4ec8): more undefined references to `SQLColAttributes' follow
odbc.o:odbc.c:(.text+0x5345): undefined reference to `SQLConfigDataSource'
odbc.o:odbc.c:(.text+0x58d3): undefined reference to `SQLError'
odbc.o:odbc.c:(.text+0x5a32): undefined reference to `SQLGetData'
odbc.o:odbc.c:(.text+0x5f2d): undefined reference to `SQLGetData'
odbc.o:odbc.c:(.text+0x6343): undefined reference to `SQLColAttributes'
odbc.o:odbc.c:(.text+0x640f): undefined reference to `SQLColAttributes'
odbc.o:odbc.c:(.text+0x6594): undefined reference to `SQLColAttributes'
odbc.o:odbc.c:(.text+0x668d): undefined reference to `SQLColAttributes'
odbc.o:odbc.c:(.text+0x71e3): undefined reference to `SQLFreeStmt'
odbc.o:odbc.c:(.text+0x727f): undefined reference to `SQLColAttributes'
odbc.o:odbc.c:(.text+0x72c6): undefined reference to `SQLColAttributes'
odbc.o:odbc.c:(.text+0x7358): undefined reference to `SQLColAttributes'
odbc.o:odbc.c:(.text+0x738d): undefined reference to `SQLColAttributes'
odbc.o:odbc.c:(.text+0x7504): undefined reference to `SQLNumResultCols'
odbc.o:odbc.c:(.text+0x77e2): undefined reference to `SQLFreeEnv'
odbc.o:odbc.c:(.text+0x78cb): undefined reference to `SQLFreeConnect'
odbc.o:odbc.c:(.text+0x790c): undefined reference to `SQLFreeConnect'
odbc.o:odbc.c:(.text+0x79f9): undefined reference to `SQLNumParams'
odbc.o:odbc.c:(.text+0x7af9): undefined reference to `SQLNumResultCols'
odbc.o:odbc.c:(.text+0x7b4e): undefined reference to `SQLFreeStmt'
odbc.o:odbc.c:(.text+0x7d51): undefined reference to `SQLMoreResults'
odbc.o:odbc.c:(.text+0x7eea): undefined reference to `SQLAllocStmt'
odbc.o:odbc.c:(.text+0x852a): undefined reference to `SQLFreeStmt'
odbc.o:odbc.c:(.text+0x8681): undefined reference to `SQLFreeStmt'
odbc.o:odbc.c:(.text+0x86e6): undefined reference to `SQLFreeStmt'
odbc.o:odbc.c:(.text+0x87e1): undefined reference to `SQLAllocStmt'
odbc.o:odbc.c:(.text+0x8912): undefined reference to `SQLFreeStmt'
odbc.o:odbc.c:(.text+0x8984): undefined reference to `SQLFreeStmt'
odbc.o:odbc.c:(.text+0x89e1): undefined reference to `SQLFreeStmt'
odbc.o:odbc.c:(.text+0x8a19): undefined reference to `SQLAllocStmt'
odbc.o:odbc.c:(.text+0x8dcd): undefined reference to `SQLFreeConnect'
odbc.o:odbc.c:(.text+0x9733): undefined reference to `SQLAllocEnv'
odbc.o:odbc.c:(.text+0x9868): undefined reference to `SQLAllocConnect'
odbc.o:odbc.c:(.text+0x9a4d): undefined reference to `SQLFreeConnect'
odbc.o:odbc.c:(.text+0x9bdc): undefined reference to `SQLAllocConnect'
odbc.o:odbc.c:(.text+0x9cd5): undefined reference to `SQLAllocConnect'
odbc.o:odbc.c:(.text+0x9da9): undefined reference to `SQLFreeConnect'
odbc.o:odbc.c:(.text+0x9ee5): undefined reference to `SQLDrivers'
odbc.o:odbc.c:(.text+0xa1e5): undefined reference to `SQLDataSources'
odbc.o:odbc.c:(.text+0xa41f): undefined reference to `SQLSetCursorName'
odbc.o:odbc.c:(.text+0xa4b8): undefined reference to `SQLGetCursorName'
odbc.o:odbc.c:(.text+0xa729): undefined reference to `SQLGetInfo'
odbc.o:odbc.c:(.text+0xa7a0): undefined reference to `SQLGetInfo'
odbc.o:odbc.c:(.text+0xa8e7): undefined reference to `SQLGetInfo'
odbc.o:odbc.c:(.text+0xacef): undefined reference to `SQLBindParameter'
odbc.o:odbc.c:(.text+0xb3a6): undefined reference to `SQLFreeStmt'
odbc.o:odbc.c:(.text+0xb3d7): undefined reference to `SQLFreeStmt'
odbc.o:odbc.c:(.text+0xb48c): undefined reference to `SQLFreeStmt'
odbc.o:odbc.c:(.text+0xb57b): undefined reference to `SQLFreeStmt'
odbc.o:odbc.c:(.text+0xb5ea): undefined reference to `SQLFreeStmt'
odbc.o:odbc.c:(.text+0xb9ef): undefined reference to `SQLSetStmtOption'
odbc.o:odbc.c:(.text+0xbb1d): undefined reference to `SQLGetConnectOption'
odbc.o:odbc.c:(.text+0xbc19): undefined reference to `SQLSetConnectOption'
odbc.o:odbc.c:(.text+0xbce2): undefined reference to `SQLGetStmtOption'
odbc.o:odbc.c:(.text+0x714): undefined reference to `SQLCancel'
odbc.o:odbc.c:(.text+0x724): undefined reference to `SQLCancel'
odbc.o:odbc.c:(.text+0x734): undefined reference to `SQLCancel'
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:259: odbc.so] 繧ィ繝ゥ繝シ 1

make failed, exit code 2

Gem files will remain installed in C:/Tools/Ruby24-x64/lib/ruby/gems/2.4.0/gems/ruby-odbc-0.99998 for inspection.
Results logged to C:/Tools/Ruby24-x64/lib/ruby/gems/2.4.0/extensions/x64-mingw32/2.4.0/ruby-odbc-0.99998/gem_make.out

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

ruby 2.3では問題ない。

C:\Users\hiros>ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]

C:\Users\hiros>gem install ruby-odbc
Fetching: ruby-odbc-0.99998.gem (100%)
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Successfully installed ruby-odbc-0.99998
Parsing documentation for ruby-odbc-0.99998
Installing ri documentation for ruby-odbc-0.99998
Done installing documentation for ruby-odbc after 3 seconds
1 gem installed

C:\Users\hiros>
``

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

問題の切り分けが必要。

rubyが2.3から2.4になったのが問題なのか
DevKitがMSYS2になったのが問題なのか

ruby 2.3.5 + MSYS2という組み合わせが使えるようなので試してみる。

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

oneclick/rubyinstaller#378
からダウンロードして試した。

7zipのファイルを展開して、PATHにMSYS2を入れただけで
2.3.4がインストールできた模様。
ruby-odbcをインストールしたら、うまく行った

C:\Tools\rubytemp>ruby -v
ruby 2.3.4p301 (2017-03-30 revision 58214) [x64-mingw32]

C:\Tools\rubytemp>gem -v
2.6.12

C:\Tools\rubytemp>gem install ruby-odbc
Fetching: ruby-odbc-0.99998.gem (100%)
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions.  This could take a while...
Successfully installed ruby-odbc-0.99998
Parsing documentation for ruby-odbc-0.99998
Installing ri documentation for ruby-odbc-0.99998
Done installing documentation for ruby-odbc after 2 seconds
1 gem installed

C:\Tools\rubytemp>

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

インストールに失敗したruby2.4は
C:\Tools\Ruby24-x64\lib\ruby\gems\2.4.0\extensions\x64-mingw32\2.4.0\ruby-odbc-0.99998

gem_make.out
mkmf.log

というファイルが残っている。

mkmf.zip

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

ruby公式サイトで似たようなバグレポートがないかどうか
調べる。
拡張ライブラリをうまくインストールできないという問題がないか?

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

調査がうまく行かないので、サポートメンターさんの助言もあり、
今日はruby-odbcのissueとして報告をする。

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

(ちなみに、DevKit/MSYS2の問題だとすれば、ほかにC言語のコンパイルがあるgemのインストールがエラーなく行われるかどうか確認すると良いかもしれない。

ただ、nokogiriなど試してみたが、Windows版のgemはコンパイルなしでインストールされてしまうもよう(fat gemと言うらしい)。

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

本家のReadmeにはVisualCでコンパイルする手順もあったが、gemを公開していてそれでインストールできないのは事実なので、こちらの面でレポートを書く。

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

(以下、日本語文面案)
gem_make_out_and_mkmf_log.zip

Ruby installerで作った環境でruby-odbc rubygemをインストールするとエラーになります。
ご確認お願いします。

[環境]
ruby version ruby 2.4.2p198 (2017-09-14 revision 59899) [x64-mingw32]
Windows 10 Home version 1703
OS Build 15063.483

C:\Users\hiros>gem install ruby-odbc
Fetching: ruby-odbc-0.99998.gem (100%)
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions.  This could take a while...
ERROR:  Error installing ruby-odbc:
        ERROR: Failed to build gem native extension.

gemのコンパイルでエラーが出ます。
詳しくは添付ファイルを参照ください。
attached file: gem_make_out_and_mkmf_log.zip

linking shared-object odbc.so
odbc.o:odbc.c:(.text+0x1ee): undefined reference to `SQLError'
odbc.o:odbc.c:(.text+0x748): undefined reference to `SQLExecute'
....
collect2.exe: error: ld returned 1 exit status

ruby 2.3.4p301 (2017-03-30 revision 58214) [x64-mingw32]
ではエラーにならず、インストールできました。

C:\>gem install ruby-odbc
Fetching: ruby-odbc-0.99998.gem (100%)
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions.  This could take a while...
Successfully installed ruby-odbc-0.99998
Parsing documentation for ruby-odbc-0.99998
Installing ri documentation for ruby-odbc-0.99998
Done installing documentation for ruby-odbc after 2 seconds
1 gem installed

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

Thank you for your great software.
When I am installing ruby-odbc , I found errors.

C:\>gem install ruby-odbc
Fetching: ruby-odbc-0.99998.gem (100%)
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions.  This could take a while...
ERROR:  Error installing ruby-odbc:
        ERROR: Failed to build gem native extension.

[My Environment]
ruby version ruby 2.4.2p198 (2017-09-14 revision 59899) [x64-mingw32]
Windows 10 Home version 1703
OS Build 15063.483

I encountered compile errors.
See attached file: gem_make_out_and_mkmf_log.zip for detail.

linking shared-object odbc.so
odbc.o:odbc.c:(.text+0x1ee): undefined reference to `SQLError'
odbc.o:odbc.c:(.text+0x748): undefined reference to `SQLExecute'
....
collect2.exe: error: ld returned 1 exit status

I can install same gem without errors
on following environment.
ruby 2.3.4p301 (2017-03-30 revision 58214) [x64-mingw32]
Windows 10 Home version 1703 (same)
OS Build 15063.483 (same)

C:\>gem install ruby-odbc
Fetching: ruby-odbc-0.99998.gem (100%)
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions.  This could take a while...
Successfully installed ruby-odbc-0.99998
Parsing documentation for ruby-odbc-0.99998
Installing ri documentation for ruby-odbc-0.99998
Done installing documentation for ruby-odbc after 2 seconds
1 gem installed

gem_make_out_and_mkmf_log.zip

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

下記メールを送りました!

(subject)
Error intalling ruby-odbc in ruby 2.4.2(Windows)

自分 さんから [email protected]
Dear Mr.Werner

Thank you for your great software.
When I am installing ruby-odbc , I found errors.

C:>gem install ruby-odbc
Fetching: ruby-odbc-0.99998.gem (100%)
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions. This could take a while...
ERROR: Error installing ruby-odbc:
ERROR: Failed to build gem native extension.
[My Environment]
ruby version ruby 2.4.2p198 (2017-09-14 revision 59899) [x64-mingw32]
Windows 10 Home version 1703
OS Build 15063.483

I encountered compile errors.
See attached file: gem_make_out_and_mkmf_log.zip for detail.

linking shared-object odbc.so
odbc.o:odbc.c:(.text+0x1ee): undefined reference to SQLError' odbc.o:odbc.c:(.text+0x748): undefined reference to SQLExecute'
....
collect2.exe: error: ld returned 1 exit status
I can install same gem without errors
on following environment.
ruby 2.3.4p301 (2017-03-30 revision 58214) [x64-mingw32]
Windows 10 Home version 1703 (same)
OS Build 15063.483 (same)

C:>gem install ruby-odbc
Fetching: ruby-odbc-0.99998.gem (100%)
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions. This could take a while...
Successfully installed ruby-odbc-0.99998
Parsing documentation for ruby-odbc-0.99998
Installing ri documentation for ruby-odbc-0.99998
Done installing documentation for ruby-odbc after 2 seconds
1 gem installed
Regards,
Hiroshi Kono

@knokmki612
Copy link
Member

knokmki612 commented Sep 30, 2017

おつかれさまでした!いったんこちらのissueはクローズしますが、メールで何か動きがありましたら、こちらのissueにコメントするのもアリですし、gitterで相談してみるのもアリです!

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

メールの返信ありました!

On 09/30/2017 08:33 AM, Hiroshi Kono wrote:

Hiroshi Kono san,
…
it seems that the failing build does not pick up the libraries ODBC32 and/or ODBCCP32 properly.
Could that be related to the Ruby version/patch level? My suggestion is that you edit the
.../ruby-odbc/ext/extconf.rb file and change the lines

   have_library("odbc32", "")
   have_library("odbccp32", "")
   have_library("user32", "")

to the more reasonable

   have_library("odbc32", "SQLAllocConnect")
   have_library("odbccp32", "SQLConfigDataSource")
   have_library("user32", "CharUpper")

or even that you re-use the if clause for PLATFORM =~ /mswin32/
forthe PLATFORM = ~ /(mingw|cygwin)/ if clause, too.

Best Regards,
Christian

Suggestionを試してみます。

@kono
Copy link
Contributor Author

kono commented Sep 30, 2017

Suggestion試してうまく行きました!!!

作者のChristian Wernerさんにメールで報告しました。

Christian Werner san,

Thank you for your QUICK reply.

It worked well with your suggestion.
I could install ruby-odbc gem in ruby 2.4.2 for windows 
successfully with following procedure.

1. Download http://www.ch-werner.de/rubyodbc/ruby-odbc-0.99998.tar.gz 
and extract it.

2. Edit ext/extconf.rb and ext/utf8/extconf.rb

ext/extconf.rb
127,130c127,129
…
< 
<    have_library("odbc32", "SQLAllocConnect")
<    have_library("odbccp32", "SQLConfigDataSource")
<    have_library("user32", "CharUpper")
---
…
>   have_library("odbc32", "")
>   have_library("odbccp32", "")
>   have_library("user32", "")

/ext/utf8/extconf.rb
116,118c116,118
…
<    have_library("odbc32", "SQLAllocConnect")
<    have_library("odbccp32", "SQLConfigDataSource")
<    have_library("user32", "CharUpper")
---
…
>   have_library("odbc32", "")
>   have_library("odbccp32", "")
>   have_library("user32", "")

3. Create gem file
> gem build ruby-odbc.gemspec

4. Install gem file

>gem install --local ruby-odbc-0.99998.gem
…
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions.  This could take a while...
Successfully installed ruby-odbc-0.99998
Parsing documentation for ruby-odbc-0.99998
Done installing documentation for ruby-odbc after 1 seconds
1 gem installed

Again, thank you very much for your suggestion.

Regards, 
Hiroshi Kono

メールを送った後に気づいたのですが、手順の最初

  1. Download http://www.ch-werner.de/rubyodbc/ruby-odbc-0.99998.tar.gz
    and extract it.

はわざわざtarballをダウンロードしなくとも最初にインストールに失敗した
時点で展開後のgemが
\Ruby24-x64\lib\ruby\gems\2.4.0\gems
に残っているのでこれを使えば良かったのでした。

@okkez
Copy link
Contributor

okkez commented Oct 2, 2017

ruby-odbc は https://github.com/larskanis/ruby-odbc は第三者が勝手に作ったリポジトリだったんですね。
http://www.ch-werner.de/rubyodbc/ がプライマリで最新リリースは2017-02なのでメンテナンス自体は続いているんですね。

@larskanis
Copy link

This issue is also filed here with a similar fix: oneclick/rubyinstaller2#94

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants