आजकल कंपाइलर डिफ़ॉल्ट 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
कभी-कभी यह आदेश नीचे की तरह कुछ त्रुटि उत्पन्न कर सकता है। यह इंगित करता है कि जीसीसी का मानक पुस्तकालय गायब है। उस स्थिति में हमें उन्हें स्थापित करना होगा।
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.
अब, जीसीसी के लिए मानक पुस्तकालय स्थापित करने के लिए, हमें निम्नलिखित आदेश लिखना होगा।
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