Je suis en train d'utiliser des méthodes contenues dans une bibliothèque partagée (libscplugin.so
)symbole caché `stat » dans libc_nonshared.a (stat.oS) est référencé par ASM
Je satisfait à toutes les exigences des bibliothèques: * libc.so
avec un lien symbolique pour libc.so.6
* libz.so
avec un lien symbolique pour libz.so.1.2.8
* libstdc++.so
avec un lien symbolique vers libstdc++.so.6.0.20
lors de la compilation je reçois le message d'erreur suivant:
$ gcc test.c -o test -L/usr/lib/arm-linux-gnueabihf/ -lscplugin /usr/bin/ld: test: hidden symbol `stat' in /usr/lib/arm-linux-gnueabihf/libc_nonshared.a(stat.oS) is referenced by DSO /usr/bin/ld: final link failed: Bad value collect2: error: ld returned 1 exit status
La seule référence que je pouvais trouver à libc_nonshared.a
est /usr/lib/arm-linux-gnueabihf/libc.so
:
$ cat libc.so /* GNU ld script Use the shared library, but some functions are only in the static library, so try that secondarily. */ OUTPUT_FORMAT(elf32-littlearm) GROUP (/lib/arm-linux-gnueabihf/libc.so.6 /usr/lib/arm-linux-gnueabihf/libc_nonshared.a AS_NEEDED (/lib/arm-linux-gnueabihf/ld-linux-armhf.so.3))
En test.c
je tente d'utiliser deux fonctions de la bibliothèque partagée (totalement sans rapport avec stat
). Que puis-je faire pour compiler?
Suppression des résultats symlink dans la sortie suivante: «/usr/bin/ld: avertissement: libc.so, nécessaire par /usr/lib/arm-linux-gnueabihf//libscplugin.so, non trouvé (essayer en utilisant -rpath ou -rpath-link) " Même si'/usr/lib/bras-linux-gnueabihf/libc.so' existe –
Pouvez-vous clarifier votre configuration? Êtes-vous en train de compiler ou de travailler avec le compilateur natif de votre système hôte? Quelle distro utilisez-vous? –
Je suis sur Ubuntu 14.10 (Linux feelinsonice-hrd 3.2.34-30 # 17 SMP lun 13 avr 15:53:45 UTC 2015 armv7l armv7l armv7l GNU/Linux), pas de compilation croisée. La bibliothèque partagée que j'utilise est pour la plate-forme 'armeabi-v7a'. –