Asterisk 1.6.2.20 + res_odbc vs unixODBC-2.3.0
Стоит система 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
ОФФТОП: как на убунте/дебиане с виртуализацией?
_________________
e=mc^2
asterisk-1.6.2.20/include/asterisk/res_odbc.h
asterisk-1.6.2.20/cdr/cdr_adaptive_odbc.c
| Код: |
| /*! #include #include #include */ #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
у вас все посылки торчат в /usr/local/unixODBC-2.3.0
при этом сами хидеры у вас в /usr/src
и вы удивляетесь почему не компилится
./configure --with-unixodbc='/usr/local/unixODBC-2.3.0'
все должно было нормально скомпилится. от вас я нормального решения не вижу, кроме глума.
_________________
e=mc^2
базовые вещи как собрать софт из исходников раньше в книгах учили
а то вы с приходом aptget/yum и прочих автоматов, совсем разучились это делать
UNIXODBC_INCLUDE='-I/usr/local/unixODBC-2.3.0/include '
Если я где-то ошибаюсь подправьте.
_________________
e=mc^2
./configure --bindir=/usr/bin --sysconfdir=/etc --libdir=/usr/lib --includedir=/usr/include
_________________
e=mc^2