.titleBar { margin-bottom: 5px!important; }

app_dbodbc.so kompilieren - MySQL

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von MoritzN, 28 März 2005.

  1. MoritzN

    MoritzN Neuer User

    Registriert seit:
    17 März 2005
    Beiträge:
    22
    Zustimmungen:
    0
    Punkte für Erfolge:
    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
     
  2. Maik

    Maik Gesperrt

    Registriert seit:
    1 Apr. 2004
    Beiträge:
    1,778
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    - 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.
     
  3. MoritzN

    MoritzN Neuer User

    Registriert seit:
    17 März 2005
    Beiträge:
    22
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  4. Maik

    Maik Gesperrt

    Registriert seit:
    1 Apr. 2004
    Beiträge:
    1,778
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  5. MoritzN

    MoritzN Neuer User

    Registriert seit:
    17 März 2005
    Beiträge:
    22
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  6. Maik

    Maik Gesperrt

    Registriert seit:
    1 Apr. 2004
    Beiträge:
    1,778
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  7. MoritzN

    MoritzN Neuer User

    Registriert seit:
    17 März 2005
    Beiträge:
    22
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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 ?
     
  8. Maik

    Maik Gesperrt

    Registriert seit:
    1 Apr. 2004
    Beiträge:
    1,778
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  9. MoritzN

    MoritzN Neuer User

    Registriert seit:
    17 März 2005
    Beiträge:
    22
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    So - jetzt isses passiert: asterisk lädt Dein Modul fehlerfrei und ES LÄUFT nun nach eingem ODBC-ini Tuning!

    Danke danke *freu* !!!
     
  10. MoritzN

    MoritzN Neuer User

    Registriert seit:
    17 März 2005
    Beiträge:
    22
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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 !!
     
  11. Maik

    Maik Gesperrt

    Registriert seit:
    1 Apr. 2004
    Beiträge:
    1,778
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    // 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 /* ... */ ;)