C言語で作ったらWindowsでもMacでもLinuxでも動くんですか?

Linuxでgccを使ってC言語を勉強してます。 Linuxのgccでコンパイルして作ったプログラムはWindow...

okazaki0ko さんからの 回答

  • 2009/01/21 21:28
  • 回答No.6
okazaki0ko

ベストアンサー率 15% (37/238)

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()くらいなら使えます。
お礼コメント
rabitwo

お礼率 84% (893/1054)

詳しいご回答ありがとうございます。

レベルが高くてわからないところもありますが、標準関数だけを使ったものなら、ソースコードはそのままで、そのOSに持っていって、そこでコンパイルすれば動くことが多いのですね。

Macは除く(知らない)とありますが、私はMacでC言語のプログラムを作ったりしたことはないのでOKです!!
投稿日時:2009/01/22 11:53
この回答にこう思った!同じようなことあった!感想や体験を書こう!
この回答にはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
  • WindowsでのC と LinuxでのC の違いについて C・C++・C#

    これから、Linux OSでC言語のプログラミングを行うことになりました。ディストリビューションはVine Linux 3.2 を利用します。 開発方法としては、Windows Xp 上でgccを利用できるIDE(Dev-C++ 4.9.9.2を利用します)で開発を行い(テスト的にコンパイル)、できたソースをLinux上でコンパイル・リンクするという方法で行おうと考えています。 そこで、疑問があります。 ANSIライブラリの中にはシステムコールを実行するものがあると思います。システムコールはOSの一部の機能ということですので、WindowsとLinuxとでは当然その機能は違ってくると思います。 つまり、WindowsでANSIライブラリを利用して実装したプログラム(コンパイルもとおる)がLinux上で正常に機能するのか(そもそもコンパイルがとおるか)がわかりません。 どなたかご教授いただけましたら幸いです。 宜しくお願いします。...

  • c言語 共有体について C・C++・C#

    c言語 共有体について  下記のプログラムのLinuxとWindowsのint型の大きさ4バイト、有効ビット数   32ビットともに同じであるが、bar.valの値が違う理由を教えてください。 〇プログラムの実行結果 linux:(Gcc) 共用体のサイズ 40563412 Windows(Bcc32) 共用体のサイズ  563412  〇プログラム: #include <stdio.h> union foo { int val; char b[4]; }; int main(void) { union foo bar; bar.b[0] = 0x12; bar.b[1] = 0x34; bar.b[2] = 0x56; bar.b[4] = 0x78; printf("共用体のサイズ %d\n", sizeof(bar)); printf("val = %x\n", bar.val); return 0; }...

  • WindowsでC言語の勉強をするには? C・C++・C#

    私は、情報学科の大学生です。家のパソコンでC言語を勉強するにはどうしたらいいですか?OSはWindows98です。エディタやコンパイラや実行を行うktermのようなものはどうすればいいのですか?それともやはり、Linuxをインストールするのが最適ですか?Linuxのインストールはなんだかむずかしそうだし、Windowsとの共存の実現はできるのですか?...

  • ソースコードのコンパイルについて C・C++・C#

    ソースコードのコンパイルについて よくソースコードだけしか公開されていないソフトを見かけますが、これらはWindows, Mac, LinuxそれぞれでコンパイルすればそれらのOSで動くようになるのでしょうか?例えばCで書かれたソースコードをWindowsでコンパイルすればexeに自動的にコンパイルされ、MacでコンパイルすればMac用のバイナリに自動的にコンパイルされるのでしょうか? またMacにはLinuxのシェルがあったと思うのですが、MacでコンパイルしたものはLinuxで動きますか?またその逆はできるのでしょうか。...

  • MacやLinuxを使う理由を教えてください その他(ソフトウェア)

    Windowsを使わずに、MacやLinuxを使う理由は何ですか? 音楽の製作者やデザイナーなどのクリエイターの方々が使うOSと言えば、なぜかMacという印象が私にはあります。 やはり、Windowsでは使えないソフトなどを使っているためMacを使っているのでしょうか? あとはLinuxを使う理由もよくわかっていません。 Linuxを使う理由として真っ先に思いつく理由は、Apacheなどのサーバソフトの使用だと思っています。 他にも、Windowsのサポートが切れたので、Windowsの代わりに古いパソコンにインストールするとか、USBメモリなどに入れてOSごと持ち運びできるからとか、いろいろあると思うのですが、これ以外にLinuxを使うメリットが思いつかないのです。 大変申し訳ありません。ご教示よろしくお願いいたします。...

ページ先頭へ