Saya punya pertanyaan: Bagaimana mengkompilasi perpustakaan statis di Linux dengan gcc
, yaitu saya perlu mengkompilasi kode sumber saya ke dalam sebuah file bernama out.a. Apakah cukup hanya dengan mengkompilasi dengan perintah gcc -o out.a out.c
? Saya tidak begitu paham gcc
, semoga ada yang bisa membantu saya.
c
gcc
static-libraries
Summer_More_More_Tea
sumber
sumber
Jawaban:
Lihat Membuat pustaka bersama dan statis dengan gnu compiler [gcc]
-c
berarti membuat file objek perantara, bukan file yang dapat dieksekusi.Ini menciptakan perpustakaan statis.
r
artinya menyisipkan dengan pengganti,c
artinya membuat arsip baru, dans
sarana menulis indeks. Seperti biasa, lihat halaman manual untuk info lebih lanjut.sumber
Berikut contoh makefile lengkap:
makefile
menjelaskan makefile:
target: prerequisites
- kepala aturan$@
- Berarti targetnya$^
- Berarti semua prasyarat$<
- Berarti hanya prasyarat pertamaar
- Alat Linux untuk membuat, memodifikasi, dan mengekstrak dari arsip lihat halaman manual untuk informasi lebih lanjut . Opsi dalam hal ini berarti:r
- ganti file yang ada di dalam arsipc
- buat arsip jika belum adas
- membuat indeks file objek ke dalam arsipKesimpulannya : Pustaka statis di Linux tidak lebih dari arsip file objek.
main.c menggunakan lib
#include <stdio.h> #include "lib.h" int main ( void ) { fun1(10); fun2(10); return 0; }
lib.h header utama libs
#ifndef LIB_H_INCLUDED #define LIB_H_INCLUDED #include "lib1.h" #include "lib2.h" #endif
lib1.c sumber lib pertama
#include "lib1.h" #include <stdio.h> void fun1 ( int x ) { printf("%i\n",x); }
lib1.h header yang sesuai
#ifndef LIB1_H_INCLUDED #define LIB1_H_INCLUDED #ifdef __cplusplus extern “C” { #endif void fun1 ( int x ); #ifdef __cplusplus } #endif #endif /* LIB1_H_INCLUDED */
lib2.c sumber lib kedua
#include "lib2.h" #include <stdio.h> void fun2 ( int x ) { printf("%i\n",2*x); }
lib2.h header yang sesuai
#ifndef LIB2_H_INCLUDED #define LIB2_H_INCLUDED #ifdef __cplusplus extern “C” { #endif void fun2 ( int x ); #ifdef __cplusplus } #endif #endif /* LIB2_H_INCLUDED */
sumber
ar
perlu penjelasan, karena ini adalah kunci untuk membuat perpustakaan statis.ar
Program menciptakan, memodifikasi, dan ekstrak dari arsip, yang merupakan file tunggal memegang koleksi file lain dalam suatu struktur yang memungkinkan untuk mengambil file individual asli.ar
membuat indeks ke simbol yang ditentukan dalam modul objek yang dapat direlokasi di arsip saat Anda menentukan pengubah s. (lihatman ar
)c++
kompiler:#ifdef __cplusplus extern "C" { #endif . . . #ifdef __cplusplus } #endif
Buat file objek dengan gcc, lalu gunakan
ar
untuk menggabungkannya ke dalam pustaka statis.sumber