2012-01-19 1 views
1

J'utilise Qt Creator sous Linux KDE. Je suis sur le point d'inclure une bibliothèque dans mon projet Qt. La bibliothèque est inclus avec succès, mais j'ai les erreurs suivantes:Qt Creator: Obtenir l'erreur "ignorer incompatibles" quand inclure la bibliothèque

:-1: error: skipping incompatible /home/administrator/yyyyy/xxxxx/../../../../opt/QtSDK 
/Madde/sysroots/harmattan-nokia-meego-arm-sysroot-1122-slim/usr/lib//libcrypto.so when 
searching for -lcrypto (the following is in red colour) File not found: (which one isn't 
told) 

    :-1: error: skipping incompatible /home/administrator/yyyyy/xxxxx/../../../../opt/QtSDK 
/Madde/sysroots/harmattan-nokia-meego-arm-sysroot-1122-slim/usr/lib//libcrypto.a when 
searching for -lcrypto (the following is in red colour) File not found: (which one isn't 
told) 

    :-1: error: skipping incompatible /home/administrator/yyyyy/xxxxx/../../../../opt/QtSDK 
/Madde/sysroots/harmattan-nokia-meego-arm-sysroot-1122-slim/usr/lib//libpthread.so when 
searching for -lpthread (the following is in red colour) File not found: (which one isn't 
told) 

    :-1: error: skipping incompatible /home/administrator/yyyyy/xxxxx/../../../../opt/QtSDK 
/Madde/sysroots/harmattan-nokia-meego-arm-sysroot-1122-slim/usr/lib//libpthread.a when 
searching for -lpthread File not found: (which one isn't told) 

    :-1: error: skipping incompatible /home/administrator/yyyyy/xxxxx/../../../../opt/QtSDK 
/Madde/sysroots/harmattan-nokia-meego-arm-sysroot-1122-slim/usr/lib//libm.so when 
searching for -lm File not found: (which one isn't told) 

    :-1: error: skipping incompatible /home/administrator/yyyyy/xxxxx/../../../../opt/QtSDK 
/Madde/sysroots/harmattan-nokia-meego-arm-sysroot-1122-slim/usr/lib//libm.a when searching 
for -lm File not found: (which one isn't told) 

    :-1: error: skipping incompatible /home/administrator/yyyyy/xxxxx/../../../../opt/QtSDK 
/Madde/sysroots/harmattan-nokia-meego-arm-sysroot-1122-slim/usr/lib//libc.so when 
searching for -lc File not found: (which one isn't told) 

    :-1: error: skipping incompatible /home/administrator/yyyyy/xxxxx/../../../../opt/QtSDK 
/Madde/sysroots/harmattan-nokia-meego-arm-sysroot-1122-slim/usr/lib//libc.a when searching 
for -lc File not found: (which one isn't told) 

J'ai ajouté les bibliothèques dans le .pro fichier en utilisant la fonction « ajouter bibliothèque » dans Qt Creator et choosed « bibliothèque externe ». Je suis le code suivant:

unix:!macx:!symbian: LIBS += -L$$PWD/../../../../opt/QtSDK/Madde/sysroots/harmattan-nokia-meego-arm-sysroot-1122-slim/usr/lib/ -lcrypto 

INCLUDEPATH += $$PWD/../../../../opt/QtSDK/Madde/sysroots/harmattan-nokia-meego-arm-sysroot-1122-slim/usr/include/openssl 
DEPENDPATH += $$PWD/../../../../opt/QtSDK/Madde/sysroots/harmattan-nokia-meego-arm-sysroot-1122-slim/usr/include/openssl 

unix:!macx:!symbian: PRE_TARGETDEPS += $$PWD/../../../../opt/QtSDK/Madde/sysroots/harmattan-nokia-meego-arm-sysroot-1122-slim/usr/lib/libcrypto.a 

En fait, fonctionne mon programm, mais je ne comprends pas ce que Qt est en train de faire. Il semble que Qt essaie d'inclure d'autres bibliothèques avec des noms similaires - mais pourquoi?

Répondre

2

Il pourrait être le cas que vous avez à la fois x64 et x86 bibliothèques sur votre système, et dans le processus de rechercher les incompatibles sont sautées

+0

Cela pourrait être possible. (additionaly: J'avais plus de bibliothèques "crypto" dans mon dossier - avec une fin différente (.so, ...)). J'ai isolé crypto.a (celui dont j'ai besoin). Non, je reçois une seule erreur: **: - 1: erreur: ignorer /home/administrator/yyyyy/xxxxx/../Library//libcrypto.a incompatible lors de la recherche de -lcrypto **. Malheureusement, c'est la bibliothèque dont j'ai besoin - et étrangement celle que j'utilise (le programme fonctionne). Savez-vous comment en savoir plus sur la bibliothèque? –

+0

Maintenant, le dossier contenant la bibliothèque contient uniquement la bibliothèque dont j'ai besoin (libcrypto.a). Comment cette bibliothèque peut-elle être une bibliothèque x64 et x86? –

+1

D'abord, vous pouvez vérifier quelle bibliothèque le qt utilise réellement en regardant dans le Makefile généré. Sur la deuxième question, vous pouvez exécuter "readelf -h libname.a". Cela vous montrera l'en-tête de la bibliothèque et l'arc pour lequel elle est construite. – Neox