Pertanyaan Bagaimana cara membuat pustaka statis dengan g ++?


Dapatkah seseorang tolong beri tahu saya cara membuat pustaka statis dari .cpp dan file .hpp? Apakah saya perlu membuat .o dan .a? Saya juga ingin tahu bagaimana saya bisa mengkompilasi pustaka statis dan menggunakannya dalam kode .cpp lainnya. saya sudah header.cpp, header.hpp . Saya ingin membuat header.a. Uji header.a dalam test.cpp. Saya menggunakan g ++ untuk kompilasi.


76
2018-05-10 08:10


asal


Jawaban:


Buat file .o:

g++ -c header.cpp

tambahkan file ini ke pustaka, buat pustaka jika perlu:

ar rvs header.a header.o

gunakan pustaka:

g++ main.cpp header.a

84
2018-05-10 08:16



Anda dapat membuat .a file menggunakan ar utilitas, seperti:

ar crf lib/libHeader.a header.o

lib adalah direktori yang berisi semua pustaka Anda. itu adalah praktik yang baik untuk mengatur kode Anda dengan cara ini dan memisahkan kode dan file objek. Memiliki segalanya dalam satu direktori umumnya terlihat jelek. Baris di atas dibuat libHeader.a di direktori lib. Jadi, di direktori Anda saat ini, lakukan:

mkdir lib

Kemudian jalankan yang di atas ar perintah.

Saat menautkan semua pustaka, Anda dapat melakukannya seperti ini:

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

Itu -L Bendera akan didapat g++ untuk menambahkan lib/ direktori ke jalan. Cara ini, g++ mengetahui direktori apa yang dicari saat mencari libHeader. -llibHeader menandai pustaka khusus untuk ditautkan.

dimana test.o dibuat seperti ini:

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

27
2018-05-10 08:17



Bisakah seseorang memberitahuku caranya   buat pustaka statis dari .cpp   dan file .hpp? Apakah saya perlu membuat   .o dan .a?

Iya nih.

Buat .o (seperti biasa):

g++ -c header.cpp

Buat arsip:

ar rvs header.a header.o

Uji:

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

Perhatikan bahwa tampaknya tidak ada gunanya membuat arsip hanya dengan satu modul di dalamnya. Anda bisa dengan mudah menulis:

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

Namun, saya akan memberi Anda manfaat dari keraguan bahwa kasus penggunaan Anda yang sebenarnya sedikit lebih rumit, dengan lebih banyak modul.

Semoga ini membantu!


19
2018-05-10 08:39