
No.8ベストアンサー
- 回答日時:
>それぞれのOSで使えるコンパイラでコンパイルしないといけないのですね。
そう。
>文章はテキストファイルだからOKということで。
いや、OKじゃない。
ソースコード(ソースプログラム)はテキストファイルだからOK、と思ったかも知れない。でも、OKじゃなかったりする。
ソースコードに漢字が入ってると、たとえそれがコメント部分だったとしても「漢字コードの違い」があって「単純に持って来ただけ」だと、コンパイルさえ出来ない事もある。
しかも「たとえ漢字が入ってなくても、改行コードの違い」でコンパイルできない場合もある。
コンピュータにとっては「テキストファイル」も「バイナリファイル」も区別出来ない。どっちも単に「何かのデータが並んで格納されてるファイル」に過ぎない。
そして「こういうデータが並んでたら、こういう意味」と言う「約束事」は、MacはMac、LinuxはLinux、WindowsはWindowsで全部違う。
テキストファイルで言えば「漢字の約束事」や「改行の約束事」が全部違う。
だから「単にソースコードを持って来ただけでもダメ」だったりする。
もし「LinuxからMacへ、テキストファイルをコンバートして送るツール」が無かったとしたら「Linuxで紙にプリントアウトして、Macでそれを読みながら手で打ち込み直し」って事になってしまう。
そういう訳で「テキストファイルだからOK」ってのは「甘い考え」だったりする。
ありがとうございます。
テキストファイルだからOKじゃなかったんですね・・・。知りませんでした。
OSが変わったらコンパイルしなおさないといけないし、テキストファイルだからって他のOSに持っていったらOSというわけでもない。
はじめから自分の使いたいOS上で開発をするべきなんですね。
No.7
- 回答日時:
そうとうなショボイコンパイラで無い限りANSIに準じているだろうからOSごとの機能を使ったプログラムでなくANSIに準じているものなら基本的にはコンパイルし直せば動く。
C言語って標準入出力は結構貧弱ですから各OSというかコンパイラで独自にグラフィックライブラリとかGUIライブラリなど拡張しているのが多いですからね。
GUIライブラリはものによっては複数のOSで提供されているものはあります。(QTやGTK+などはクロスプラットフォーム)
また、WideStudio/MWTの様にクロスプラットフォームに対応したものもあります。(その場合、各OSごとにコンパイルをやり直せば基本的には動きます。)
ありがとうございます。
各OSごとにコンパイルしなおすのがポイントみたいですね。
ちょっとそのほかのところはわかりませんでした。ANSIとかはわかります。
No.6
- 回答日時:
Linuxでプログラミング・・・って事は、OSの元で動くプログラムですね。
GUIプログラミングかCUIプログラミングかによって回答が違ってきますが、CUIプログラミングでprintf()とかfopen()とかfgets()とかisdigit()とかの標準ライブラリを使ったプログラミングであると仮定してお話しします。
こういったプログラムは、コンソールで動作させますが、Linux(UNIX)のターミナル、MS-DOS(Windowsのコマンドプロンプト)では、再コンパイルをかければ、ほぼ動きます。(Macは知らない)
動かないのは、C標準ライブラリ以外のOS依存系のライブラリを使用したものやCPU依存の部分があったときなどです。
確か、MS-DOSのCコンパイラ(Microsoftの!!)のライブラリにgetch()なんて関数(だかマクロ)があって、キーボードから1文字読み込むっていう動作をしました(MS-DOSのシステムコールを利用していた)。
UNIXには、pipe()やfork()などという関数があります(ただし正確にはfork()はシステムコール)。
これは、Cの標準関数ではないので、他のOSの元では再コンパイルもできないでしょう。
また、メモリサイズの関係で、プログラムによってはMS-DOSやCP/Mでは動かせないことも。(おそらく、ここで質問しているレベルでは無関係かな?)
あまりにメモリを消費するプログラムは、OSのメモリ管理能力によっては動作できません。
ちなみに、組み込みでも標準出力をRS-232Cにして端末につなげば、printf()くらいなら使えます。
詳しいご回答ありがとうございます。
レベルが高くてわからないところもありますが、標準関数だけを使ったものなら、ソースコードはそのままで、そのOSに持っていって、そこでコンパイルすれば動くことが多いのですね。
Macは除く(知らない)とありますが、私はMacでC言語のプログラムを作ったりしたことはないのでOKです!!
No.5
- 回答日時:
コンパイラってのは「翻訳者」だよ。
LinuxとかMacとかってのは「国」だと思えば良いよ。
C言語という人が判る言葉をLinux国とかMac国の言葉に変換してくれる。
変換した国の言葉が、他の国と同じ筈ないでしょ?
No.3
- 回答日時:
C言語も含む「コンパイル言語」は「特定の環境用」の実行可能ファイルを生成する。
つまり、環境(OS)が違えば動かない。
また、環境専用のライブラリ(関数)なんかもあるわけで、
そういったものを利用したものはソースもコンパイルできないことがほとんど。
Windows上でMacやLinux用の実行ファイルを作ることも場合によっては可能だけど、
それは「クロスプラットフォーム」といって、作ったものはWindowsでは動作しない。
ありがとうございます。
コンパイルとは特定の環境用の実行可能ファイルを作ることなのですね。
環境専用のライブラリというのに特に注意が必要なこともわかりました。
No.2
- 回答日時:
動かない。
Mac用はMac上で、Linux用はLinux上で、Windows用はWindows上で、再コンパイルしないといけない。
で「違うパソコンでコンパイルする」んだから「使うコンパイラも違う」事になり「コンパイラが違えば動作も違う」って事になる。
「動作が違う」ってのは「動かない」と同義。
下手すると
#include <stdio.h>
int main(void)
{
printf("Hello world\n");
}
でさえ「同じには動かない」事もある。動かないどころか、コンパイルさえ出来ない事も。
じゃなかったら、ソフトハウスは「移植」で金取れないよ。
それぞれのOSで使えるコンパイラでコンパイルしないといけないのですね。
文章はテキストファイルだからOKということで。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- Mac OS mac os xの設定の(起動ディスク)にブート用dvdが表示されません 1 2022/05/28 13:29
- デスクトップパソコン OSとストレージについて 5 2023/01/19 20:01
- UNIX・Linux VertualBox でのLinux Mint の活用方法について教えてください 4 2023/08/06 10:34
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- Windows 10 Windowsのシステムイメージと他OSパーティション 2 2023/07/18 19:13
- その他(OS) Macか、Windowsか、アドバイスください 2 2023/03/28 19:40
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- Mac OS Mac Bookで文章作成したい 4 2023/03/12 06:55
- Excel(エクセル) WindowsとMac 4 2023/06/18 18:35
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
ビープ音が鳴りません・・・
-
ヘッダーファイル『windows.h』...
-
CMakeでfortranをコンパイルしたい
-
64ビットのlinuxで32ビットメモ...
-
C#で char型とstring型の比較で...
-
「インクルードファイル 'pthre...
-
新版 明解C++ 入門編 に...
-
vba コンパイル
-
共有ライブラリの内容確認について
-
分割コンパイル
-
WindowsAPIプログラムをgccでコ...
-
プログラミングのC言語の始め方...
-
プレコンパイルの意味を教えて...
-
C++プログラミングの文字化けの...
-
VBでUnicodeの記号を表示する方法
-
Borland C++ Compiler 5.5の使...
-
latex cite, ref
-
32bitでコンパイルするには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アプリケーションのDLLファイル...
-
<unistd.h>をVisualStudioでつ...
-
すべてのリビルド: 0 正常、 0 ...
-
math.hに含まれる関数が使えない
-
実行後にコンパイルに失敗しま...
-
C言語で作ったらWindowsでもMac...
-
共有ライブラリの内容確認について
-
C#で char型とstring型の比較で...
-
同じEXE・同じファイルで解析結...
-
gcc コンパイル killed
-
64ビットのlinuxで32ビットメモ...
-
自作DLLの中身を暗号化
-
gccでc++プログラムをコンパイ...
-
実行ファイルが作成環境以外のP...
-
gcc バージョン違いによるコン...
-
<math.h>ヘッダを入力している...
-
lhafileをインストールしたい
-
#If True Then の # って何??
-
c言語です コンパイルした時に...
-
MVSマシンで0C7でABENDしたので...
おすすめ情報