Fist je suis confus devrais-je définir des bibliothèques sous Linker/Libraries ou les définir sous "chemin et symbole". Je pense qu'ils sont les mêmes. Ai-je raison?
toute façon pour ma question - je dois lier la bibliothèque statique, alors j'ai essayé peu de choses:
Premier essai J'essaie d'ajouter gtest (c'est la bibliothèque) et son chemin d'accès dans la bibliothèque de liens. Ainsi compilé et lié correctement, mais échoua à l'exécution, car il essayait charger une bibliothèque partagée ( je veux une bibliothèque statique! )
erreur lors du chargement des bibliothèques partagées: libgtest.so.0
Deuxième essai - J'essaie de le définir dans chemin et le symbole ajoute aux bibliothèques le chemin complet '/root/workspace/gmock/gtest/lib/.lib/libgtest.a'. dans ce cas, j'ai eu une erreur dans le couplage:
g++ -L/root/workspace/gmock/lib/.libs -L/root/workspace/gmock/gtest/lib/.libs -o "playground" ./src/p.o ./src/playground.o -lpthread -l/root/workspace/gmock/gtest/lib/.lib/libgtest.a -l/root/workspace/gmock/lib/.lib/libgmock.a
/usr/bin/ld: cannot find -l/root/workspace/gmock/gtest/lib/.lib/libgtest.a
Ce message dosnt donne une réponse sans expliquer comment vous définissez différemment les liens entre statique et partagé.
Je vous remercie
Après beaucoup de recherche et réponse non liée. Je l'ai trouvé !!! Je l'ai trouvé dans ce lien utile vers Eclipse-cdt
Apparemment, la bibliothèque doit exister dans l'espace de travail.
Ajoutez le chemin/fichier de la bibliothèque à: Propriétés - Construction C/C++ - Paramètres - Éditeur de liens GCC C++ - Divers - Autres objets
J'ai construit la bibliothèque de cryptographie Botan en tant que bibliothèque statique, pour des raisons que je ne veux pas aborder ici, et lorsque j'ai suivi toutes les étapes sur les sites Web, ajoutez les chemins de bibliothèque et spécifiez le nom de la bibliothèque sans "lib" et ". a ", mon projet a bien fonctionné, cependant, lorsque je l'ai exécuté, j'ai continué à obtenir des erreurs" Le programme s'est terminé de manière inattendue "(ou similaire). Enfin, j'ai compris comment résoudre ce problème. Dans la barre de menus, sélectionnez Projet> Propriétés> Générer C/C++> Paramètres> Éditeur de liens Cross G ++ et ajoutez -static
entre ${COMMAND}
et ${FLAGS}
, de sorte que la ligne entière ressemble à ceci:
${COMMAND} -static ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}
Le vôtre peut varier. J'utilise Eclipse Luna Service Release 2 (4.4.2), avec le projet mingw-w64 mingw-builds w/gcc 4.9.2 sous Windows 8.1.