इस कोड पर विचार करें:स्थिर लिंकिंग के लिए .o से .a फ़ाइल क्यों बनाएं?
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;
}
मैं इन कार्यक्रमों को एक साथ लिंक करना चाहते हैं। तो मैं यह करता हूं:
gcc -c -o one.o one.c
gcc -c -o two.o two.c
gcc -o a.out prog.c one.o two.o
यह ठीक काम करता है।
या मैं एक स्थिर पुस्तकालय बना सकते हैं:
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
तो मेरी सवाल यह है: मैं क्यों दूसरे संस्करण का प्रयोग करेंगे - एक है जहाँ मैं एक "ए" फ़ाइलें बनाई - के बजाय मेरी जोड़ने "। ओ "फाइलें? वे दोनों स्थिर रूप से लिंकिंग प्रतीत होते हैं, तो क्या एक बनाम दूसरे में एक फायदा या वास्तुशिल्प अंतर है?
परिणाम आमतौर पर बहुत अलग होता है। यह इस प्रदूषित उदाहरण में समान होता है। – UncleO