[Linuxtrent] Re: Errore linkinh libsqlite3

  • From: Antonio Galea <antonio.galea@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Mon, 7 Nov 2011 22:41:17 +0100

2011/11/7 Mario Alexandro Santini <alexmario74@xxxxxxxxx>:
>
> $ locate libsqlite3
> /usr/lib/i386-linux-gnu/libsqlite3.a
> /usr/lib/i386-linux-gnu/libsqlite3.la

Ok, questo conferma che hai la sola versione a 32bit della
libreria. Per qualche motivo, però, o il tuo g++ non accetta
i flag più ovvi per compilare a 32bit (che è strano), oppure i
path su cui cerca sono sballati.

Hai provato anche questo?

  g++ -m32 -L/usr/lib/i386-linux-gnu -lsqlite3 test.cpp

Magari fallisce per altri motivi (magari perché l'ambiente di cross
compiling è incompleto) però il linker il simbolo sqlite3_open
dovrebbe trovarlo. Tanto per intendersi,

  nm /usr/lib/i386-linux-gnu/libsqlite3.a | grep sqlite3_open

ti ritorna qualcosa, vero? Altrimenti la libreria è corrotta...

Giusto per curiosità, ho scaricato la versione amd64
di libsquite3-0 e libsqlite3-dev:

  http://packages.ubuntu.com/oneiric/amd64/libsqlite3-0/download
  http://packages.ubuntu.com/oneiric/amd64/libsqlite3-dev/download

Il primo pacchetto dichiara di essere "MultiArch: same", dunque
puoi installare entrambe le versioni i386 ed amd64 senza problemi.

Per quanto riguarda la parte di sviluppo, non c'è nessuna
dichiarazione (in effetti non è ancora ben definito quale
dovrebbe essere lo standard in questi casi) - e guardando
al contenuto c'è di sicuro sovrapposizione almeno sugli
header files.

Così ad occhio, dovresti essere in grado di installare libsqlite3-0
in entrambe le versioni e sostituire il pacchetto dev con quello
che la tua architettura si aspetta di avere - ovvero amd64.

Antonio
--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: