app_dbodbc.so kompilieren - MySQL

MoritzN

Neuer User
Mitglied seit
17 Mrz 2005
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Hi *!


Habe nun endlich Dank Eurer Hilfe mein * am laufen, würde aber gerne einige Configs wie z.B. Weiterleitungen aus einer Datenbank lesen

Die "normalen" DB-Funktionen (DBget etc.) möchte ich nicht nutzen, da dort der Zugriff von einem Webinterface eher kompliziert wäre.

Hat von Euch schon jemand die Sourcen kompiliert bekommen? Bei mir steigt er nämlich immer aus (app_dbodbc.c liegt in /usr/scr/..bla...asterisk/apps/) - nach einem #gcc app_dbodbc.c passiert das:
Code:
In file included from /usr/include/asterisk/linkedlists.h:4,
                 from /usr/include/asterisk/chanvars.h:17,
                 from /usr/include/asterisk/channel.h:19,
                 from /usr/include/asterisk/file.h:17,
                 from app_dbodbc.c:23:
/usr/include/asterisk/lock.h: In function `ast_mutex_init':
/usr/include/asterisk/lock.h:302: error: `PTHREAD_MUTEX_RECURSIVE' undeclared (first use in this function)
/usr/include/asterisk/lock.h:302: error: (Each undeclared identifier is reported only once
/usr/include/asterisk/lock.h:302: error: for each function it appears in.)
app_dbodbc.c:35:17: sql.h: No such file or directory
app_dbodbc.c:36:20: sqlext.h: No such file or directory
app_dbodbc.c:37:22: sqltypes.h: No such file or directory
app_dbodbc.c: At top level:
app_dbodbc.c:70: error: parse error before "ODBC_env"
app_dbodbc.c:70: error: `SQL_NULL_HANDLE' undeclared here (not in a function)
app_dbodbc.c:70: warning: data definition has no type or storage class
app_dbodbc.c:72: error: parse error before "ODBC_con"
app_dbodbc.c:72: warning: data definition has no type or storage class
app_dbodbc.c:73: error: parse error before "ODBC_stmt"
app_dbodbc.c:73: warning: data definition has no type or storage class
app_dbodbc.c: In function `odbc_init':
app_dbodbc.c:290: error: `SQL_NULL_HANDLE' undeclared (first use in this function)
app_dbodbc.c:292: error: `SQL_HANDLE_ENV' undeclared (first use in this function)
app_dbodbc.c:294: error: `SQL_SUCCESS' undeclared (first use in this function)
app_dbodbc.c:294: error: `SQL_SUCCESS_WITH_INFO' undeclared (first use in this function)
app_dbodbc.c:302: error: `SQL_ATTR_ODBC_VERSION' undeclared (first use in this function)
app_dbodbc.c:302: error: `SQL_OV_ODBC3' undeclared (first use in this function)
app_dbodbc.c:313: error: `SQL_HANDLE_DBC' undeclared (first use in this function)
app_dbodbc.c:324: error: `SQL_LOGIN_TIMEOUT' undeclared (first use in this function)
app_dbodbc.c:324: error: `SQLPOINTER' undeclared (first use in this function)
app_dbodbc.c:324: error: parse error before ')' token
app_dbodbc.c:327: error: `SQLCHAR' undeclared (first use in this function)
app_dbodbc.c:327: error: parse error before ')' token
app_dbodbc.c: In function `odbc_do_query':
app_dbodbc.c:465: error: `SQL_HANDLE_STMT' undeclared (first use in this function)
app_dbodbc.c:467: error: `SQL_SUCCESS' undeclared (first use in this function)
app_dbodbc.c:467: error: `SQL_SUCCESS_WITH_INFO' undeclared (first use in this function)
app_dbodbc.c:471: error: `SQL_HANDLE_DBC' undeclared (first use in this function)
app_dbodbc.c:477: error: `SQL_NTS' undeclared (first use in this function)
app_dbodbc.c: In function `odbc_unload_module':
app_dbodbc.c:515: error: `SQL_HANDLE_STMT' undeclared (first use in this function)
app_dbodbc.c:517: error: `SQL_HANDLE_DBC' undeclared (first use in this function)
app_dbodbc.c:518: error: `SQL_HANDLE_ENV' undeclared (first use in this function)
app_dbodbc.c: In function `ast_db_odbcget':
app_dbodbc.c:562: error: `SQL_C_CHAR' undeclared (first use in this function)
app_dbodbc.c:563: error: `SQL_NO_DATA' undeclared (first use in this function)

Was mach ich denn nu falsch? Oder hat evtl jemand die .so Datei "fertig" für mich (i386)?

Danke,
Moritz
 
- Ich nehme mal an, du willst gegen CVS Head kompilieren. Dafuer scheint der source ein wenig zu alt zu sein.
- Dir fehlen auf jeden Fall die sql Header Dateien. Die sollten zumindest unter Debian im Paket unixodbc-dev enthalten sein
- Du kannst apps nicht einfach so mit gcc kompilieren. Der will daraus dann naemlich ein ganzes ausfuehrbares Programm machen. Du musst einen Eintrag im Makefile unter ...../asterisk/apps/ machen. Einfach an die APPS-Variable anhaengen.
 
Hi Maik!

Nein, habe auch mit dem aktuellen BriStuff kompiliert (RC7k) - gleicher Fehler - ob gcc oder Eintrag wie auf voip-info.org beschrieben im Makefile.

Mag es an einer "falschen" MySQL oder ODBC Installation meinerseits liegen? Alles SuSE Yast-RPMs...


Danke,
---
Moritz
 
bristuff laeuft anscheinend nur mit Asterisk 1.0.X und ich vermute mal, das gleiche gilt fuer app_dbodbc. Da du nirgendwo erwaehnst, welche Version von Asterisk du verwendest, gehe ich mal davon aus, dass da dein Problem liegt.
 
Sorry, hast recht :)

Mein Asterisk ist 1.0.6 aus der Bristuff RC7k Distri - Laufen tut's unter SuSE 9.2 mit 2.6er Kernel

Habe aber zum kompilieren der dbodbc zum Test den aktuellen CVS geholt (aber eben mit beiden Versionen versucht). Fehlermeldung hat sich lsutigerweise geändert:

Code:
cc -fPIC   -c -o app_dbodbc.o app_dbodbc.c
In file included from /usr/include/asterisk/linkedlists.h:4,
                 from /usr/include/asterisk/chanvars.h:17,
                 from /usr/include/asterisk/channel.h:19,
                 from /usr/include/asterisk/file.h:17,
                 from app_dbodbc.c:23:
/usr/include/asterisk/lock.h: In function `ast_mutex_init':
/usr/include/asterisk/lock.h:301: error: `PTHREAD_MUTEX_RECURSIVE' undeclared (first use in this function)
/usr/include/asterisk/lock.h:301: error: (Each undeclared identifier is reported only once
/usr/include/asterisk/lock.h:301: error: for each function it appears in.)
app_dbodbc.c: At top level:
app_dbodbc.c:68: error: `__use_AST_MUTEX_DEFINE_STATIC_rather_than_AST_MUTEX_INITIALIZER__' undeclared here (not in a function)
make: *** [app_dbodbc.o] Error 1

Danke wiedermal (denn den ziemlich herzlichen Umgangston aus der OS-Gemeinde nocht nicht gewohnt) sagt
---
Moritz
 
Ich bleibe bei meiner ersten Behauptung: app_dbodbc kompiliert nur gegen aeltere Asterisk-Versionen. :)

Hast du den Source ueber einen der Links auf voip-info.org runtergeladen? Die sollte ja eigentlich funktionieren, denn ich glaube nicht, dass es in 1.0 irgendwelche API-Changes gab.
 
Jepp, habe beide sources (mit und ohne CID-DB) von asterisk-support.de gestestet, gleiche Meldung. Sowohl im 1.0.6-Bri sowie im aktuellen CVS Kontext.

Würde denn ein precompiled .so File von z.B. Dir bei mir laufen? Auch auf meiner 1.0.6-Bri ?
 
Ich hab mir mal gerade 1.0.6 und app_dbodbc runtergeladen. Hat bei mir problemlos durchkompiliert. Ich vermute mal, dass dein Bristuff da Probleme macht. Ich hab dir mal mein .so file hier hinterlegt. Ich glaube aber ehrlich gesagt nicht, dass es bei dir funktionieren wird.
 
So - jetzt isses passiert: asterisk lädt Dein Modul fehlerfrei und ES LÄUFT nun nach eingem ODBC-ini Tuning!

Danke danke *freu* !!!
 
Um mein Kompilierungsproblem in letzter Instanz zu lösen: *schäm*

Nach der Änderung im Source sollte man den "falschen" Bereich vielleicht mit // - nicht mit einem Semikolon auskommentieren ;-)--- PHP-Gewohnheit ... peinlich... Aber danke Euch !!
 
// ist eigentlich auch kein Kommentarzeichen in echtem C-Code. Das gibt es eigentlich erst in C++. Neuere Compiler akzeptieren das aber gluecklicherweise trotzdem. Iss ja auch viel komfortabler als /* ... */ ;)
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,840
Beiträge
2,219,268
Mitglieder
371,543
Neuestes Mitglied
Brainbanger
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.