# wine + unixODBC на x86_64 не работает :(

## asm64

Здравствуйте. Помогите пожалуйста с такой бедой.

x86_64. Установлены wine, unixODBC, mysql и myodbc. wine настроен на встроенную библиотеку odbc32 и под ним крутится биржевой торговый терминал quik. Их задача - экспорт котировок по ODBC в программу анализа под Linux. Связка unixODBC-->myodbc-->mysql настроена и база заведена, с правами всё ок. Но 32 битный wine не хочет дружить с x86_64 библиотекой /usr/lib/libodbc.so, в дебаге пишет:

err:odbc:SQLDataSources Error: empty dm handle (gProxyHandle.dmHandle == NULL)

В пакете emul-linux-x86-baselibs unixODBC отсутствует  :Sad:  Смотрел здесь:

http://www.winehq.org/site/docs/wineusr-guide/misc-things-to-configure

http://wiki.winehq.org/WineOn64bit#head-7f9ba30a115acb6bc6feef3ee48cd06e91d44519

Что делать? Не собирать же gentoo с нуля в 32 бита. Мож как-то unixODBC в 32 битном варианте собрать можно? Очень надеюсь на Вашу помощь.

----------

## Laitr Keiows

Может попробовать из другой системы перетащить?..

----------

## asm64

 *Laitr Keiows wrote:*   

> Может попробовать из другой системы перетащить?..

 

А как же пути, версии и зависимости?

Как делают emul-linux-x86? Может как-то можно собрать отдельно пакет unixODBC в 32 бита?

----------

## Laitr Keiows

 *asm64 wrote:*   

> А как же пути, версии и зависимости?

 

Попробуй, может получится. А не получится так приобретёшь ценный опыт.

Кроме того:

 *asm64 wrote:*   

> В пакете emul-linux-x86-baselibs unixODBC отсутствует 

 

Посмотри еще: 

```
emerge -s emul-linux-x86
```

И тут:

http://www.gentoo.org/proj/en/base/amd64/emul/content.xml

http://www.gentoo.org/proj/en/base/amd64/emul/

----------

## asm64

Спасибо. Попробую от gentoo x86 взять, посмотрим что получится, потом отпишусь...

А вобще как и кто делает emul-linux-x86? Кросс-компиляцией или тупо берут библы от x86 сборки, не в курсе случаем. Погуглил ничего не нашёл - кто собирает, как собирает - непонятно...  :Rolling Eyes: 

----------

## asm64

Кому интересно. Нашёл таки не тривиальный способ решения поставленной задачи.

How to set up a 32bit chroot - http://www.gentoo.org/proj/en/base/amd64/howtos/chroot.xml

Всё, теперь можно писать торгового робота-скальпера!

----------

## Laitr Keiows

 *asm64 wrote:*   

> А вобще как и кто делает emul-linux-x86? Погуглил ничего не нашёл - кто собирает, как собирает - непонятно... 

 

Я уже давал эту ссылку:

http://www.gentoo.org/proj/en/base/amd64/emul/

Нашел в гугле  :Smile: 

----------

## asm64

 *Laitr Keiows wrote:*   

> http://www.gentoo.org/proj/en/base/amd64/emul/
> 
> Нашел в гугле 

 

Упс. Проморгал   :Shocked:  . Спасибо большое! Думаю вопрос решён.

----------

## asm64

 :Exclamation:  Что сделал.

1. Собрал CHROOT по методе http://www.gentoo.org/proj/en/base/amd64/emul/

2. FEATURES="buildpkg" emerge unixODBC dev-db/mysql myodbc

    Получились пакеты tbz2:

        DBD-mysql-4.00.5.tbz2

        DBI-1.601.tbz2

        ed-0.8.tbz2

        myodbc-3.51.12.tbz2

        mysql-5.0.54.tbz2

        mysql-5.0.tbz2

        mysql-init-scripts-1.2.tbz2

        Net-Daemon-0.43.tbz2

        perl-Storable-2.16.tbz2

        perl-Sys-Syslog-0.18.tbz2

        PlRPC-0.2020-r1.tbz2

        Storable-2.16.tbz2

        Sys-Syslog-0.18.tbz2

        unixODBC-2.2.12.tbz2

3. Распаковал все в отдельной директории и скопировал только папку ./usr/lib32 в /usr/lib32

4. Указал в ODBCConfig-e 32bit драйвер /usr/lib32/libmyodbc3.so и конфиг /usr/lib32/libodbcmyS.so

5. Создал скрипт для запуска Квика (info.exe):

    #!/bin/bash

    export LIB_ODBC_DRIVER_MANAGER=/usr/lib32/libodbc.so

    WINEDEBUG="+odbc32" wine info.exe

6. Запускаю скрипт. Дважды просит пароль: Пароль для <user> на localhost? Ввожу - всё ок.

7. В Квике жму экспорт по ODBC и о чудо! отображена моя база данных, которую я завел в MySQL. Ввожу пользователя <user>@localhost и пароль. Жму подключиться.

8. Вайн вылетает. В консоли пишет:

info.exe: symbol lookup error: /usr/lib32/libmyodbc3.so: undefined symbol: min

9. Погуглил: http://forums.mysql.com/read.php?37,197326,197730#msg-197730

 *Quote:*   

> This is a known bug when compiling with GCC 4.2 (iirc), which we will likely patch in the ODBC driver. Thanks for alerting us to it. 

 

 :Question:   Теперь вопросы.

Всё-ли правильно я сделал, взяв только ./usr/lib32? Кто-нибудь сталкивался с подобной проблемой libmyodbc3?

Спасибо.

----------

## asm64

Ура!   :Very Happy:   Усё заработало. Докладываю, если кому интересен этот вопрос.   :Cool:   Дело было в  mysql-5.0.54, а 5.0.56 был замаскирован (собака). Сделал так:

1. из chroot 32 (myodbc пересобрать обязательно!)

# ACCEPT_KEQWORDS="~amd64" FEATURES="buildpkg" emerge dev-db/mysql myodbc

2. Скопировал только /usr/lib32/* из получившихся пакетов как в предыдущем посте и вуаля   :Very Happy: 

Параметры из Квика полетели в базу mysql. Ура товарищи!

P.S.: Спасибо Laitr Keiows за наводки на необходимый материал.

----------

