2015-09-01 27 views

Odpowiedz

6

Wystarczy przejść do biblioteki, jak w pliku wejściowego tak:

gcc main.c yourlibrary.a -o prog 
+1

do opracowania, '-l' jest potrzebny tylko do wyszukiwania ścieżki biblioteki i automatycznie wybrać bibliotekę ze standardowego wzorca nazewnictwa. –

+0

Zaakceptowany, ponieważ jest to najprostsza implementacja rozwiązania, nawet jeśli odpowiedź Briana McFarlanda jest również świetna (i nauczył mnie czegoś o plikach make). – GreySage

5

Jak Nunzio powiedział. Po prostu wprowadź go bezpośrednio jako plik wejściowy. Pobił mnie, ale i tak mam pełny przykład.

mylib.c:

#include <stdio.h> 
void say_hi(void) 
{ 
    printf("hi\n"); 
} 

main.c:

extern void say_hi(void); 
int main(int argc, char**argv) 
{ 
    say_hi(); 
    return 0; 
} 

Makefile:

main: main.c mylib.a 
    gcc -o main main.c mylib.a 

mylib.a: mylib.o 
    ar rcs mylib.a mylib.o 

mylib.o: mylib.c 
    gcc -c -o [email protected] $^ 

Zdaję sobie sprawę, to zakłada pewną wiedzę tła w Utwórz. Aby zrobić to samo w/o marki, uruchom następujące polecenia w kolejności:

gcc -c -o mylib.o mylib.c 
ar rcs mylib.a mylib.o 
gcc -o main main.c mylib.a 
+0

Przebacz moją nowość, ale czy możesz wyjaśnić polecenie gcc -c -o $ @ $ ^? – GreySage

+2

Pewnie. To jest plik makefile, a nie gcc. Są one nazywane zmiennymi automatycznymi. '$ @' reprezentuje nazwę celu make. '$ ^' reprezentuje wymagania wstępne (tj. zależności) po prawej stronie ':'. W tym przypadku jest to skrót od 'gcc -c -o mylib.o mylib.c'. Tutaj nie ma większego pożytku. Napisałem to z przyzwyczajenia bardziej niż cokolwiek innego. Ale jest to konieczne dla ogólnych reguł i może być przydatne w inny sposób. –

+1

https://www.gnu.org/software/make/manual/make.html#Automatic-Variables –