Asterisk 1.6.2.20 + res_odbc vs unixODBC-2.3.0

Linux/*BSD и всё что с ними связано.

Модераторы: Admins, Модераторы

Ответить
soloma
Сообщения: 138
Зарегистрирован: 08 янв 2008, 16:24
Откуда: Киев, Украина.

Asterisk 1.6.2.20 + res_odbc vs unixODBC-2.3.0

Сообщение soloma » 10 окт 2011, 15:51

Господа, прошу помощи в сборке *.
Стоит система CentOS release 5.7 (Final)
uname -a
Linux odbctest 2.6.18-274.3.1.el5 #1 SMP Tue Sep 6 20:13:52 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux

unixODBC-2.3.0 собирал из исходников, поскольку необходим коннект с ораклом, а версии оракл клиента для 64битного линукса поддерживаются odbc версии 2.2.12 и выше.

ODBC работает нормально. Но при компиляции Астериска лезут ошибки.
При конфигурации подсовываю путь к скомпиленому ODBC
./configure --with-unixodbc='/usr/local/unixODBC-2.3.0'

Все параметры вроде прописаны

Код: Выделить всё

configure:45920: checking for mandatory modules:  UNIXODBC
on odbctest
ac_cv_lib_iodbc_SQLConnect=no
ac_cv_lib_odbc_SQLConnect=yes
GENERIC_ODBC_INCLUDE='-I/usr/local/unixODBC-2.3.0/include '
GENERIC_ODBC_LIB='-L/usr/local/unixODBC-2.3.0/lib -lodbc '
IODBC_DIR=''
IODBC_INCLUDE=''
IODBC_LIB=''
PBX_GENERIC_ODBC='1'
PBX_IODBC='0'
PBX_UNIXODBC='1'
UNIXODBC_DIR='/usr/local/unixODBC-2.3.0'
UNIXODBC_INCLUDE='-I/usr/local/unixODBC-2.3.0/include '
UNIXODBC_LIB='-L/usr/local/unixODBC-2.3.0/lib -lodbc '
#define HAVE_UNIXODBC 1
но при компиляции cdr_odbc вылазит следующее

Код: Выделить всё

   [CC] cdr_odbc.c -> cdr_odbc.o
In file included from cdr_odbc.c:45:
/usr/src/asterisk/asterisk-1.6.2.20/include/asterisk/res_odbc.h:30:17: error: sql.h: No such file or directory
/usr/src/asterisk/asterisk-1.6.2.20/include/asterisk/res_odbc.h:31:20: error: sqlext.h: No such file or directory
/usr/src/asterisk/asterisk-1.6.2.20/include/asterisk/res_odbc.h:32:22: error: sqltypes.h: No such file or directory
In file included from cdr_odbc.c:45:
/usr/src/asterisk/asterisk-1.6.2.20/include/asterisk/res_odbc.h:47: error: expected specifier-qualifier-list before ‘SQLHDBC’
/usr/src/asterisk/asterisk-1.6.2.20/include/asterisk/res_odbc.h:64: error: expected specifier-qualifier-list before ‘SQLSMALLINT’
/usr/src/asterisk/asterisk-1.6.2.20/include/asterisk/res_odbc.h:100: error: expected declaration specifiers or ‘...’ before ‘SQLHSTMT’
/usr/src/asterisk/asterisk-1.6.2.20/include/asterisk/res_odbc.h:168: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ast_odbc_direct_execute’
/usr/src/asterisk/asterisk-1.6.2.20/include/asterisk/res_odbc.h:178: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ast_odbc_prepare_and_execute’
/usr/src/asterisk/asterisk-1.6.2.20/include/asterisk/res_odbc.h:222: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ast_odbc_ast_str_SQLGetData’
cdr_odbc.c:61: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘execute_cb’
cdr_odbc.c: In function ‘odbc_log’:
cdr_odbc.c:129: error: ‘SQLHSTMT’ undeclared (first use in this function)
cdr_odbc.c:129: error: (Each undeclared identifier is reported only once
cdr_odbc.c:129: error: for each function it appears in.)
cdr_odbc.c:129: error: expected ‘;’ before ‘stmt’
cdr_odbc.c:136: error: ‘stmt’ undeclared (first use in this function)
cdr_odbc.c:136: warning: implicit declaration of function ‘ast_odbc_direct_execute’
cdr_odbc.c:136: error: ‘execute_cb’ undeclared (first use in this function)
cdr_odbc.c:138: error: ‘SQLLEN’ undeclared (first use in this function)
cdr_odbc.c:138: error: expected ‘;’ before ‘rows’
cdr_odbc.c:140: warning: implicit declaration of function ‘SQLRowCount’
cdr_odbc.c:140: error: ‘rows’ undeclared (first use in this function)
cdr_odbc.c:141: warning: implicit declaration of function ‘SQLFreeHandle’
cdr_odbc.c:141: error: ‘SQL_HANDLE_STMT’ undeclared (first use in this function)
make[1]: *** [cdr_odbc.o] Error 1
make: *** [cdr] Error 2
Проверил наличие файлов

Код: Выделить всё

ls -l /usr/src/odbc/unixODBC-2.3.0/include/sql*
-rw-r--r-- 1 1000 1000 82674 Dec 11  2009 /usr/src/odbc/unixODBC-2.3.0/include/sqlext.h
-rw-r--r-- 1 1000 1000 32261 Dec 11  2009 /usr/src/odbc/unixODBC-2.3.0/include/sql.h
-rw-r--r-- 1 1000 1000 11141 Dec 11  2009 /usr/src/odbc/unixODBC-2.3.0/include/sqltypes.h
-rw-r--r-- 1 1000 1000 21666 Dec 11  2009 /usr/src/odbc/unixODBC-2.3.0/include/sqlucode.h
e=mc^2

Аватара пользователя
anest
Модератор
Сообщения: 5700
Зарегистрирован: 28 ноя 2004, 10:04

Сообщение anest » 10 окт 2011, 16:08

переходи на Ubuntu ;)

soloma
Сообщения: 138
Зарегистрирован: 08 янв 2008, 16:24
Откуда: Киев, Украина.

Сообщение soloma » 10 окт 2011, 16:36

Очень может так произойти) Сейчас решаю проблему в лоб, жестко прописав пути к файлам в res_odbc.h, если не сработает - буду подбирать другой дистрибутив.
ОФФТОП: как на убунте/дебиане с виртуализацией?
e=mc^2

soloma
Сообщения: 138
Зарегистрирован: 08 янв 2008, 16:24
Откуда: Киев, Украина.

Сообщение soloma » 13 окт 2011, 09:00

Решил проблему жестко прописав пути к файла в

asterisk-1.6.2.20/include/asterisk/res_odbc.h
asterisk-1.6.2.20/cdr/cdr_adaptive_odbc.c

Код: Выделить всё

/*!
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
*/
#include "/usr/local/unixODBC-2.3.0/include/sql.h"
#include "/usr/local/unixODBC-2.3.0/include/sqlext.h"
#include "/usr/local/unixODBC-2.3.0/include/sqltypes.h"
e=mc^2

ddkprog
Сообщения: 81
Зарегистрирован: 03 июл 2009, 22:09

Сообщение ddkprog » 13 окт 2011, 11:02

да вы просто гений!
у вас все посылки торчат в /usr/local/unixODBC-2.3.0
при этом сами хидеры у вас в /usr/src
и вы удивляетесь почему не компилится

soloma
Сообщения: 138
Зарегистрирован: 08 янв 2008, 16:24
Откуда: Киев, Украина.

Сообщение soloma » 13 окт 2011, 11:13

я не особо силен в Линуксе, но думаю, что указав путь к unixODBC
./configure --with-unixodbc='/usr/local/unixODBC-2.3.0'
все должно было нормально скомпилится. от вас я нормального решения не вижу, кроме глума.
e=mc^2

ddkprog
Сообщения: 81
Зарегистрирован: 03 июл 2009, 22:09

Сообщение ddkprog » 13 окт 2011, 11:52

ну так подкачайте знания по линуксу, как вы вообще бех этих знаний управляете астериском? удивляюсь

базовые вещи как собрать софт из исходников раньше в книгах учили
а то вы с приходом aptget/yum и прочих автоматов, совсем разучились это делать

soloma
Сообщения: 138
Зарегистрирован: 08 янв 2008, 16:24
Откуда: Киев, Украина.

Сообщение soloma » 13 окт 2011, 12:07

При компиляции указан путь к хедерам
UNIXODBC_INCLUDE='-I/usr/local/unixODBC-2.3.0/include '

Если я где-то ошибаюсь подправьте.
e=mc^2

soloma
Сообщения: 138
Зарегистрирован: 08 янв 2008, 16:24
Откуда: Киев, Украина.

Сообщение soloma » 14 окт 2011, 17:47

нормально компиляция проходит, если собирать unixODBC с параметрами
./configure --bindir=/usr/bin --sysconfdir=/etc --libdir=/usr/lib --includedir=/usr/include
e=mc^2

Ответить