-save-temps
এটি মনে রাখার জন্য আরও একটি ভাল বিকল্প:
gcc -save-temps -c -o main.o main.c
main.c
#define INC 1
int myfunc(int i) {
return i + INC;
}
এবং এখন, স্বাভাবিক আউটপুট ছাড়াও main.o
, বর্তমান ওয়ার্কিং ডিরেক্টরিতে নিম্নলিখিত ফাইলগুলি রয়েছে:
main.i
কাঙ্ক্ষিত প্রিপোসেসসযুক্ত ফাইলটি এতে রয়েছে:
# 1 "main.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 31 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 32 "<command-line>" 2
# 1 "main.c"
int myfunc(int i) {
return i + 1;
}
main.s
এটি একটি বোনাস :-) এবং উত্পন্ন সমাবেশ ধারণ করে:
.file "main.c"
.text
.globl myfunc
.type myfunc, @function
myfunc:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl %edi, -4(%rbp)
movl -4(%rbp), %eax
addl $1, %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size myfunc, .-myfunc
.ident "GCC: (Ubuntu 8.3.0-6ubuntu1) 8.3.0"
.section .note.GNU-stack,"",@progbits
আপনি যদি এটি বৃহত সংখ্যক ফাইলের জন্য করতে চান তবে পরিবর্তে এটি ব্যবহারের কথা বিবেচনা করুন:
-save-temps=obj
যা মধ্যবর্তী ফাইলগুলিকে -o
বর্তমান কার্যনির্বাহী ডিরেক্টরিটির পরিবর্তে অবজেক্ট আউটপুট হিসাবে একই ডিরেক্টরিতে সংরক্ষণ করে , ফলে সম্ভাব্য বেসনাম বিবাদগুলি এড়িয়ে চলে।
এই বিকল্পটির সুবিধাটি -E
হ'ল বিল্ডটিতে খুব হস্তক্ষেপ না করে এটি কোনও বিল্ড স্ক্রিপ্টে যুক্ত করা সহজ।
এই বিকল্পটি সম্পর্কে আরও একটি দুর্দান্ত জিনিস হ'ল আপনি যদি যুক্ত করেন -v
:
gcc -save-temps -c -o main.o -v main.c
এটি প্রকৃতপক্ষে কুশলী অস্থায়ীগুলির পরিবর্তে সুস্পষ্ট ফাইলগুলি ব্যবহৃত হচ্ছে তা দেখায় /tmp
, সুতরাং ঠিক কী চলছে তা জানতে সহজতর, যার মধ্যে প্রাকপ্রসেসিং / সংকলন / সমাবেশ পদক্ষেপগুলি অন্তর্ভুক্ত রয়েছে:
/usr/lib/gcc/x86_64-linux-gnu/8/cc1 -E -quiet -v -imultiarch x86_64-linux-gnu main.c -mtune=generic -march=x86-64 -fpch-preprocess -fstack-protector-strong -Wformat -Wformat-security -o main.i
/usr/lib/gcc/x86_64-linux-gnu/8/cc1 -fpreprocessed main.i -quiet -dumpbase main.c -mtune=generic -march=x86-64 -auxbase-strip main.o -version -fstack-protector-strong -Wformat -Wformat-security -o main.s
as -v --64 -o main.o main.s
উবুন্টু 19.04 amd64 এ পরীক্ষিত, জিসিসি 8.3.0।