118 votes

Comment créer une bibliothèque statique avec g++?

Quelqu'un peut-il me dire comment créer une bibliothèque statique à partir d'une .rpc et une .php fichier? Dois-je créer les .o et le .un? Je voudrais aussi savoir comment puis-je compiler une bibliothèque statique et l'utiliser dans d'autres .rpc code. J'ai header.cpp, header.hpp . je voudrais créer header.a. Test de l'en-tête.une en test.cpp. J'utilise g++ pour compiler.

128voto

nbt Points 15965

Créer un .o fichier:

g++ -c header.cpp

ajouter ce fichier dans une bibliothèque, la création de la bibliothèque si nécessaire:

ar rvs header.a header.o

utilisation de la bibliothèque:

g++ main.cpp header.a

51voto

Sriram Points 3739

Vous pouvez créer un .a le fichier à l'aide de l' ar utilitaire, comme suit:

ar crf lib/libHeader.a header.o

lib est un répertoire qui contient tous vos bibliothèques. il est de bonne pratique pour organiser votre code de cette façon et de séparer le code et les fichiers de l'objet. Avoir tout dans un seul répertoire général semble laid. La ligne ci-dessus crée libHeader.a dans le répertoire lib. Donc, dans votre répertoire courant, faire:

mkdir lib

Puis exécuter le dessus ar commande.

Lors de la liaison de toutes les bibliothèques, vous pouvez le faire comme ceci:

g++ test.o -L./lib -llibHeader -o test  

L' -L drapeau obtiendrez g++ ajouter l' lib/ répertoire du chemin. De cette façon, g++ sait ce répertoire à rechercher lors de la recherche d' libHeader. -llibHeader drapeaux de la bibliothèque de lien.

où test.o est créé comme suit:

g++ -c test.cpp -o test.o 

31voto

Quelqu'un peut-il me dire comment créer une bibliothèque statique à partir d'une .rpc et un .php fichier? Dois-je créer l' .o et la la .un?

Oui.

Créer la .o (comme d'habitude):

g++ -c header.cpp

Créer l'archive:

ar rvs header.a header.o

Test:

g++ test.cpp header.a -o executable_name

Notez qu'il semble un peu inutile de faire une archive avec un seul module. Vous pourriez tout aussi bien avoir écrit:

g++ test.cpp header.cpp -o executable_name

Encore, je vais vous donner le bénéfice du doute que votre cas est un peu plus complexe, avec plus de modules.

Espérons que cette aide!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X