আজকাল কম্পাইলার ডিফল্ট 64-বিট সংস্করণের সাথে আসে। কখনও কখনও আমাদের কিছু 32 বিট সিস্টেমে একটি কোড কম্পাইল এবং এক্সিকিউট করতে হয়। সেই সময়ে, আমাদের এই বৈশিষ্ট্যটি ব্যবহার করতে হবে।
প্রথমে, আমাদের জিসিসি কম্পাইলারের বর্তমান লক্ষ্য সংস্করণটি পরীক্ষা করতে হবে। এটি পরীক্ষা করতে, আমাদের এই কমান্ডটি টাইপ করতে হবে৷
৷gcc –v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu ........... ........... ...........
এখানে এটা দেখানো হচ্ছে যে টার্গেট হল x86_64। তাই আমরা জিসিসির 64-বিট সংস্করণ ব্যবহার করছি। এখন 32-বিট সিস্টেম ব্যবহার করতে, আমাদের নিম্নলিখিত কমান্ড লিখতে হবে।
gcc –m32 program_name.c
কখনও কখনও এই কমান্ডটি নীচের মত কিছু ত্রুটি তৈরি করতে পারে। এটি নির্দেশ করে যে gcc এর মানক লাইব্রেরি অনুপস্থিত। সেই অবস্থায় আমাদের এগুলো ইন্সটল করতে হবে।
In file included from test_c.c:1:0: /usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory #include <bits/libc-header-start.h> ^~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated.
এখন, gcc-এর জন্য স্ট্যান্ডার্ড লাইব্রেরি ইনস্টল করতে, আমাদের নিম্নলিখিত কমান্ডগুলি লিখতে হবে৷
sudo apt-get install gcc-multilib sudo apt-get install g++-multilib
এখন এই কোড ব্যবহার করে আমরা 32-বিট সিস্টেম এবং 64-বিট সিস্টেমে কার্যকর করার পার্থক্য দেখতে পাব।
উদাহরণ
#include<stdio.h> main(){ printf("The Size is: %lu\n", sizeof(long)); }
আউটপুট
$ gcc test_c.c test_c.c:3:1: warning: return type defaults to ‘int’ [-Wimplicit-int] main(){ ^~~~ $ ./a.out The Size is: 8
আউটপুট
$ gcc -m32 test_c.c test_c.c:3:1: warning: return type defaults to ‘int’ [-Wimplicit-int] main(){ ^~~~ test_c.c: In function ‘main’: test_c.c:4:28: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘unsigned int’ [-Wformat=] printf("The Size is: %lu\n", sizeof(long)); ~~^ %u $ ./a.out The Size is: 4