Considerate questo codice:Perché creare un file .a da .o per il collegamento statico?
one.c:
#include <stdio.h>
int one() {
printf("one!\n");
return 1;
}
two.c:
#include <stdio.h>
int two() {
printf("two!\n");
return 2;
}
prog.c
#include <stdio.h>
int one();
int two();
int main(int argc, char *argv[])
{
one();
two();
return 0;
}
voglio collegare questi programmi insieme. Così faccio questo:
gcc -c -o one.o one.c
gcc -c -o two.o two.c
gcc -o a.out prog.c one.o two.o
Questo funziona bene.
O potrei creare una libreria statica:
ar rcs libone.a one.o
ar rcs libtwo.a two.o
gcc prog.c libone.a libtwo.a
gcc -L. prog.c -lone -ltwo
Quindi la mia domanda è: perché dovrei utilizzare la seconda versione - quella in cui ho creato un file ".a" - piuttosto che collega la mia". o "file? Entrambi sembrano essere collegati staticamente, quindi c'è un vantaggio o una differenza architettonica tra uno e l'altro?
Il risultato è in genere molto diverso. Capita di essere lo stesso in questo esempio forzato. – UncleO