Newsgroup: it.comp.os.linux.development
Titolo: problemi con Berkeley DB 4.0

Riesco ad usare la versione 3.2 precompilata per la mia distribuzione
(mdk8.1), ma ho difficolta' a compilare la nuova 4.0.14.
Ho quattro problemi:
1) con configure ottengo un warning del tipo che gcc (2.96) e' bacata e mi
esorta a aggiornarlo
2) se creo la versione dinamica al make install libtool non dice che
libdb.la
 e' danneggiato e non lo vuole usare
3) non riesce a trovare gli header di java nonostante nel PATH ci sia
/usr/lib/jdk1.3.1/include
4) se creo e installo la versione statica gcc non riesce a linkare la
libreria
Secondo voi da cosa dipendono questi problemi?
Grazie
Riccardo

 libreria
Che errori?
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! A mathematician is a device for turning coffee into theorems. !>-
                P. Erdos

 Che errori?
Il sorgente prova.cpp e' il seguente
#include <db_cxx.h>
int main(){Db db(0, 0);}
Per compilare staticamente
g++ -o prova -static
-I /usr/share/libdb-4.0/include 
-L /usr/share/libdb-4.0/lib
-ldb_cxx prova.cpp
l'errore
/tmp/ccAKzSQo.o: In function `main':
/tmp/ccAKzSQo.o(.text+0x12): undefined reference to `Db::Db(DbEnv *,
unsigned int)' /tmp/ccAKzSQo.o(.text+0x25): undefined reference to
`Db::~Db(void)' collect2: ld returned 1 exit status
altrimenti senza -static (cosi' funziona)
 
g++ -o prova
-I /usr/share/libdb-4.0/include
-Wl,--rpath -Wl,/usr/share/libdb-4.0/lib -ldb_cxx prova.cpp
In teoria la libreria dovrebbe fornire sia la versione statica che
dinamica, in ogni caso ho provato a compilare le librerie con 
l'opzione solo statica, ma l'errore non cambia.
Grazie
Riccardo

 l'opzione solo statica, ma l'errore non cambia.
Ma la libreria statica c'e'? Il 
libdb_cxx.la
 che dice a proposito?
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Take It All, Our Gold, Our Homes, Our Life, But We Didn't Kill 
	    Your Christ! !>- Blind Guardian - The Script For My Requiem

 cercare gli include linkali nella /usr/include per es.
 
Fatto, ora trova gli header di java, ma si perde quelli che normalmente
trova. Questo e' l'output:
...
checking for dirent.h that defines DIR... no
checking for sys/ndir.h that defines DIR... no
checking for sys/dir.h that defines DIR... no
checking for sys/select.h... yes
checking for sys/time.h... yes
checking for ANSI C header files... no
checking for sys/types.h... no
checking for sys/stat.h... no
checking for stdlib.h... no
checking for string.h... no
...
libdb_cxx.la
 non lo trovo. Come si fa a capire se c'e' la libreria
statica?
Riccardo

 statica?
Allora: che diavolo ha installato il make install? Se c'e' una libreria .a
allora e' quella e deve essere riferita nella sezione old_library del file
.la
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! *Real* programmers use cat > a.out! No way, /real/ ones
        use zcat > a.out 'cause you can type faster that way. !>-
                -- from a Slashdot discussion

 file .la
il file .a e`
libdb-4.0.la
 .la non c'e' e con il make install ottengo:
 
libtool: install: `
libdb-4.0.la
' is not a valid libtool archive
Riccardo

 libtool: install: `
libdb-4.0.la
' is not a valid libtool archive
Beh, qui prima bisogna riuscire a compilarlo.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
           -<! Failure is not an option...it's bundled with Microsoft !>-

 va a controllare la presenza degli include jdk.
Accade questo:
In file included from /usr/include/bits/types.h:143,
                 from /usr/include/sys/types.h:30,
                 from configure:9527:
/usr/include/bits/pthreadtypes.h:48: parse error before `size_t'
/usr/include/bits/pthreadtypes.h:48: warning: no semicolon at end of struct or u
nion
/usr/include/bits/pthreadtypes.h:51: parse error before `__stacksize'
/usr/include/bits/pthreadtypes.h:51: warning: data definition has no type or sto
rage class
/usr/include/bits/pthreadtypes.h:52: warning: data definition has no type or sto
rage class
ed errori analoghi.
Altrimenti senza l'opzione per java il configure termina correttamente
Il file 
configure.in
 non l'ho trovato in compenso ho trovato 
configure.ac
che riporta:
if test "$db_cv_java" = "yes"; then
        # Java requires shared libraries.
        if test "$enable_shared" = "no"; then
                AC_MSG_ERROR([Java requires shared libraries])
        fi
        AC_PROG_JAVAC
        AC_PROG_JAR
        AC_JNI_INCLUDE_DIR
        for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS
        do
                CPPFLAGS="$CPPFLAGS -I$JNI_INCLUDE_DIR"
        done
        ADDITIONAL_LANG="$ADDITIONAL_LANG java"
        INSTALL_LIBS="$INSTALL_LIBS \$(libjso_target)"
else
        JAVAC=nojavac
fi
Che ne pensi?

         AC_JNI_INCLUDE_DIR
Questa ha la faccia di essere quella che ti serve. Controlla un poco come e'
fatta e in che dir va a guardare.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
