কীভাবে একজন দুটি জিসিসি সংযুক্ত করে .o অবজেক্ট ফাইলকে তৃতীয় .o ফাইলের সাথে সংযুক্ত করে?
$ gcc -c a.c -o a.o
$ gcc -c b.c -o b.o
$ ??? a.o b.o -o c.o
$ gcc c.o other.o -o executable
আপনার যদি উত্স ফাইলে অ্যাক্সেস থাকে তবে -combine
জিসিসি পতাকা সংকলনের আগে উত্স ফাইলগুলিকে মার্জ করবে:
$ gcc -c -combine a.c b.c -o c.o
তবে এটি কেবল উত্স ফাইলগুলির জন্যই কাজ করে এবং জিসিসি .o
এই আদেশের জন্য ফাইলগুলি ইনপুট হিসাবে গ্রহণ করে না ।
সাধারণত, লিঙ্ক করা .o
ফাইলগুলি সঠিকভাবে কাজ করে না, কারণ আপনি লিঙ্কারের আউটপুটটিকে এর জন্য ইনপুট হিসাবে ব্যবহার করতে পারবেন না। ফলাফলটি একটি ভাগ করা লাইব্রেরি এবং ফলাফল কার্যকর করার সাথে স্থিতিশীলভাবে লিঙ্ক করা হয় না।
$ gcc -shared a.o b.o -o c.o
$ gcc c.o other.o -o executable
$ ./executable
./executable: error while loading shared libraries: c.o: cannot open shared object file: No such file or directory
$ file c.o
c.o: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped
$ file a.o
a.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
-combine
বিকল্প নেই। এটি জিসিসি ৪.১.২ এ বিদ্যমান এবং জিসিসি .3.৩.০-তে বিদ্যমান নেই (অন্য কেউ যখন এটি সরিয়ে ফেলা হয়েছে ঠিক তখনই তা বুঝতে পারে)।