কম্পিউটার

সি এবং সি++ এ 64-বিট জিসিসিতে 32-বিট প্রোগ্রাম কীভাবে কম্পাইল করবেন


আজকাল কম্পাইলার ডিফল্ট 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

  1. C++ এ তির্যক ম্যাট্রিক্স এবং স্কেলার ম্যাট্রিক্স পরীক্ষা করার জন্য প্রোগ্রাম

  2. কিভাবে C++ প্রোগ্রাম ব্যবহার করে একটি প্রোগ্রাম চালু করবেন?

  3. কিভাবে C++ প্রোগ্রামের ফাংশনে অবজেক্ট পাস করবেন?

  4. কিভাবে C++ এ কম্বিনেশন এবং পারমুটেশন গণনা করা যায়?