No.2ベストアンサー
- 回答日時:
VCで普通にコンパイルをすると、実際にはcl.exeというコンパイラが使われます。
これは、Windows用です。但し、VCのIDEは、使うコンパイラを設定することができます。
例えばLinux用のクロスコンパイラを用意して(VC自体には付属してません)使えばOKです。
通常のコンパイラは、自分の動作環境と出力オブジェクトの動作環境が同一ですが、
クロスコンパイラは、自分とは違う動作環境用(ここではLinux)のオブジェクトを作ります。
これは、Linuxで普通のコンパイラを使った場合と、同様なexeを作れるということです。
但し、作れるというだけで、Windows ではそのまま動かないものになります。
# 提示の条件だけだと、Linux サーバ上で Windows のエミュレーション環境が動いてる可能性もありますが…。
>例えばLinux用のクロスコンパイラを用意して(VC自体には付属してません)使えばOKです。
ということは、自前でgccといったコンパイラをVC側に持ってきて、それを使うようにVCで設定する。といった解釈でいいのでしょうか?
お話を聞いているうちに、自分でも試したくなってきました。現在は具体的な方法をWebで探しいます。
もし、ご存知でしたら教えてください。
ありがとうございました。
No.3
- 回答日時:
簡単なたとえでは
プレイステーションなどのゲームはPC上で作成しますが
PC上では(通常)動きません
PCで作成→CD作成→ゲーム機で動作
をさせないと(通常)動きません。
ゲーム機本体でゲームを作成することは(基本的に)出来ません。
(通常)と付けたのは、PC上でゲーム機のエミュレーション機能があれば動作します。
エミュレーションは仮想的に動作させることです。
詳しくは「エミュレーション」で検索すればわかると思います。
ありがとうございました
エミュレーション機能は利用しておらず、
あくまで実機での実行です。
教えてくださった例だと、クロスコンパイルの必要性を感じますが、Windows-Linux間となると、いまいち「なんで?」と思ったのがきっかけでした。
No.1
- 回答日時:
クロスコンパイルはターゲット用のバイナリを生成できる。
普通windows用のコンパイラは
int main(){printf("hello world\n");}
のような人が判るコードをCPUが理解できる命令コード群(機械語)に置き換える作業をする。
クロスコンパイラはこの機械語のテーブルとでも言おうか、ターゲットPC用のテーブルで命令コード群を生成できる。
(だからクロスコンパイラとして作成しておかないとできない)
クロスコンパイラが存在する事によって、負荷が高く直接コンパイルするのが困難な環境用へのプログラムのコンパイルがより快適(正しくはリソースが空いている)なPCで行う事ができるようになる。
極端な話、windowsでMacOSX用のバイナリを吐かせる事もできなくもない。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- UNIX・Linux VertualBox でのLinux Mint の活用方法について教えてください 4 2023/08/06 10:34
- C言語・C++・C# linux C言語について ./ファイル名 入力値 入力値が表示 という風に実行と入力を同時にしたい 3 2022/10/17 16:57
- その他(OS) Windowsの古いゲーム(32bit OSの時代のもの)を、 現行のWin11機でプレイしたい。 4 2023/08/01 08:22
- Windows 10 Windowsのシステムイメージと他OSパーティション 2 2023/07/18 19:13
- その他(パソコン・スマホ・電化製品) LINUXPCに詳しい人に気楽に答えてほしい質問です。 2 2022/10/25 08:07
- UNIX・Linux fessカスタマイズ 1 2022/09/27 17:29
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
- サーバー AWSやAZUREでかかる費用について。自宅で仮想サーバを立ててLinuxの勉強をしようと思っていま 2 2023/03/25 20:40
- モニター・ディスプレイ DisplayPort 入力のMSTハブ(Linux対応)を探しています。 Linux を2画面で作 1 2022/11/07 21:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0除算して、落ちるプログラムと...
-
コンパイルできない
-
C++ で、「)」が必要 というエ...
-
変数(関数)名の頭に_
-
コンパイラについて
-
conio.h? curses.h?
-
graph.hがincludeできない
-
sprintfを用いたフォーマット文...
-
何も書いて無いのに警告が出る...
-
Delphiの逆コンパイル
-
volatile修飾について
-
C++でアボート(Abort)で処理が...
-
__extension__
-
プリコンパイラとは?
-
ABAQUS ユーザーサブルーチン...
-
関数の戻り値による変数の初期化
-
C言語
-
fortranでのNaNについて
-
コンパイラフラグ(compiler fla...
-
QBasicをWindowsXPで使いたい!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0除算して、落ちるプログラムと...
-
C++でアボート(Abort)で処理が...
-
変数(関数)名の頭に_
-
C++ で、「)」が必要 というエ...
-
io.hをincludeするとそのような...
-
C言語のワーニングメッセージの...
-
Eclipseの環境設定について
-
ABAQUS ユーザーサブルーチン...
-
Visual C++とVisual C++.NETの違い
-
コンパイルできない
-
volatile修飾について
-
コンパイラについて
-
コンパイラフラグ(compiler fla...
-
Delphiの逆コンパイル
-
fortranでのNaNについて
-
cobolの文法チェックソフト
-
不要なインクルードファイルの検出
-
__extension__
-
IPアドレス表示プログラム
-
isnanの取り扱いについて
おすすめ情報