C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

CおよびC++の64ビットgccで32ビットプログラムをコンパイルします


現在、コンパイラにはデフォルトの64ビットバージョンが付属しています。場合によっては、コードをコンパイルして32ビットシステムに実行する必要があります。その際、thisS機能を使用する必要があります。

最初に、gccコンパイラの現在のターゲットバージョンを確認する必要があります。これを確認するには、このコマンドを入力する必要があります。

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ビットバージョンのgccを使用しています。 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++で対角行列とスカラー行列をチェックするプログラム

    行列M[r][c]が与えられた場合、「r」は行数を示し、「c」はr=cが正方行列を形成するような列数を示します。与えられた正方行列が対角であるかどうかを確認する必要があります およびスカラー 対角の場合、行列かどうか およびスカラー マトリックスを作成し、結果にyesを出力します。 対角行列 正方行列m[][]は、主対角を除く要素がゼロの場合にのみ対角行列になります。 下の図のように- ここで、赤の要素は主対角線であり、主対角線がゼロであることを除いてゼロ以外の残りの要素であり、対角行列になっています。 。 例 Input: m[3][3] = { {7, 0, 0},  

  2. C++での立方体の体積と表面積のプログラム

    キューブとは何ですか? 立方体は、正方形の6つの面を持つ3次元オブジェクトです。つまり、同じ長さと幅の辺があります。立方体は、次のプロパティを持つ唯一の正六面体です- 6つの顔 12個のエッジ 8つの頂点 以下は立方体の図です 問題 側面を考えると、タスクは立方体の総表面積と体積を見つけることです。ここで、表面積は面が占めるスペースであり、体積は形状に含めることができるスペースです。 立方体の表面積と体積を計算するには、次の式があります- 表面積=6*側面*側面 ボリューム=サイド*サイド*サイド 例 Input-: side=3 Output-: volume of c