Domanda

Ho una libreria compilata in un file .a, collegato contro la mia domanda. (IPhone, sviluppando con Xcode)

Tutto sembra andare bene, il collegamento sembra avere successo, ma quando ho eseguito il programma si blocca. Il punto di caduta è in un call memcmp () nella libreria collegata in modo statico. Il debugger mostra tutti i tipi di roba chiamata con "dyld" nei loro nomi, così sembra che per qualsiasi ragione non è in grado di risolvere memcmp, inizia a cercare librerie dinamiche, quindi non riesce.

Per quanto ne sappia memcmp è in libc, quindi non dovrebbe essere un problema. (Provato anche passando -lc al linker, e non ha aiutato, proprio come mi aspettavo)

Così come dovrebbe funzionare? Perché una libreria collegata in modo statico non può usare qualsiasi cosa, da libc? Come devo compilare?

Grazie

È stato utile?

Soluzione 2

Forse qualcuno lo troverà utile se condivido quale fosse il problema:

La biblioteca non è stato compilato per la stessa versione del sistema operativo come il programma principale, quindi si aspettava un libc diverso da quello che si verifica durante l'esecuzione.

Altri suggerimenti

libc è apparentemente collegato dinamicamente sulla vostra piattaforma. Una versione di corrispondenza non può essere trovata in fase di esecuzione per soddisfare la dipendenza generata in fase di collegamento.

Non riesco a spiegare come questo sarebbe accaduto altro che la corruzione del file system o chroot chiamando prima il linking dinamico accade (che sembrerebbe improbabile).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top