仕事でunixからC言語のコンパイラーをつかっています。
WindowsXPからC言語となるとすぐVISUALC++を想像してしまい 単純なunixでつかっているようなものが見当たりません。
linuxはつかったことないのですが、unixと似ているとききました。
unixと同じく標準でcコンパイラーは付属しているのでしょうか?
ちなみにC言語を使いテキストファイルを編集(並び替えやあるワードの抜き出しやあるワードの置換)するプログラムを組み実行しています。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

RedHat/Fedora Coreのようなインストール時に「Installation Type」の選択があるようなディストリビューションだと「Personal Desktop」のようなデスクトップ環境を選択するとgccはインストールされない事があるので気を付けてください。


その場合には、別途gcc(通常、パーッケージとして提供されている)をインストールする必要があります。


以下、余談。

>WindowsXPからC言語となるとすぐVISUALC++を想像してしまい 単純なunixでつかっているようなものが見当たりません。

Windowsでも、例えばMinGWやCygwinをインストールすればgccをWindowsで使用する事が可能です。

○タダで始めるC/C++プログラミング for Windows
http://www2.wbs.ne.jp/~dskoba/database/prog.htm\


>unixと同じく標準でcコンパイラーは付属しているのでしょうか?

フリーのUNIX系OS(Linux/FreeBSD等)はそうかもしれませんが、商用UNIX系OSの場合、ほとんど標準でCコンパイラは付属しているということはないです。
別途、Cコンパイラは購入というのが多いです。
    • good
    • 0

#1さんの補足です。


ほとんどのディストリビューションで、標準のインストールでgccはインストールされています。
    • good
    • 0

LinuxディストリビューションにはフリーのCコンパイラgccは標準で付いていますのでそれをインストールして使ってください。

    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q最適化コンパイラについて

Windows版インテルC++コンパイラのような最適化コンパイラをインストールすれば、そのコンピュータ上で行う全ての処理が高速化できるということなんでしょうか?最適化コンパイラについての概要や、導入のメリットデメリット、おすすめコンパイラなど、いろいろお教えください。よろしくお願いします。

Aベストアンサー

マクロやVBAは、そのアプリケーションの内部で解釈動作されるので、外部にどんな
優れたコンパイラを用意しても、全く影響を受けません。コンパイラによる影響を
受けるのは、それを使って作成した実行ファイル(拡張子が.exe)だけです。

ソースコードを書く→それをコンパイラに通す→実行ファイル完成、という流れを
たどってできあがった実行ファイルだけに影響します。

マクロやVBAはコンパイラに通せないので、コンパイラをインストールしても全く
実行速度は変わりません。お金とディスクスペースの無駄です。

QunixはC言語で書かれている?不思議?

unix、linuxはC言語で書かれている、と聞いたのですが、不思議なことがあります。

そもそもC言語を書くためにはviとか必要ですしコンパイルするにもccとかgccとか必要ですよね?

viとかccとかを使うには、また、unixが必要な気がします。どうやってunixを作ることができたのでしょうか?

ニワトリと卵みたいですごく不思議なのですが・・

linuxのところで
http://virus.okwave.jp/kotaeru.php3?q=2246024
のような質問をしているうちに不思議に思ってきました。

Aベストアンサー

最初に搭載するプロセッサに合ったアセンブラやそれよりも低級言語でC言語のコンパイラをまず書きます。それからOSを構築していったものと考えられます。私も10年ぐらい前にUnixを使った頃あなたと同じような疑問を持ちましたが、良く分かっている人間からそういう答えをもらいました。確かこのようなことをいったのを聞いたことがあります。

また、現在の例を考えてもらえばわかるのですが、例えばあるコード(ゲーム機など)のソフトなどを開発するためにはWindows上で開発しますよね?
 Source code -> Target machine code
   compile 
ある機械にあったコンパイラを作りそれでシステムを構築するわけです。つまり違うOSでターゲットとなるマシンにあったコンパイラを書き
OSやそのAPIを書きアプリケーションを書いていく感じです。どちらも似たような答えですが、いずれかのうちの一つでしょう。他のOSでコンパイラを書き構築したかマシン語をベースにそのマシーンで開発していったかのいずれかと思います。

最初に搭載するプロセッサに合ったアセンブラやそれよりも低級言語でC言語のコンパイラをまず書きます。それからOSを構築していったものと考えられます。私も10年ぐらい前にUnixを使った頃あなたと同じような疑問を持ちましたが、良く分かっている人間からそういう答えをもらいました。確かこのようなことをいったのを聞いたことがあります。

また、現在の例を考えてもらえばわかるのですが、例えばあるコード(ゲーム機など)のソフトなどを開発するためにはWindows上で開発しますよね?
 Source code -> T...続きを読む

Qコンパイラの互換性について

コンパイラの互換性について教えてください。違うコンパイラで作成したShared Objectを使用するプログラムの動作が不安定になるといったことは考えられますか?考えられるとすれば、どのような理由でそういった事象が発生するのでしょうか?

WindowsではMSのコンパイラとBorlandのコンパイラについて。
SolarisではSUNのコンパイラとGNUのコンパイラについて。
Linuxでは異なるバージョンのGNUコンパイラについて。

現状を教えてください。
ここらへんを解説している書籍やURLの紹介も嬉しいです。

Aベストアンサー

ELFやPEはヘッダ情報を含む全体のフォーマットでOS依存情報(より正確にはローダー依存)を含みます。
COFFはオブジェクトカーネル部分のみを指し、OS依存部分を含みません。

UNIX版gccで出力にa.outフォーマットを指定した場合は伝統的なa.outフォーマットになるのですが、これはCOFFとは明らかに違います。

> 非インターフェース部分の隠遮が…
COMに関する記述なので「インタフェース部分」はIUnknownとIDispatchを指すものと思われます。
#1の回答中で使用している「インターフェース」とは意味合いが違いますので、ご注意ください。
結果、「非インターフェース部分の隠蔽が…」に関する対応としては
>> コンパイルオプションやプリプロセッサ構文、処理系依存の拡張機能を駆使してプログラマが保証する必要があります。
と言うことになります。
対象となるコンパイラのコードジェネレータ、オプティマイザに対する深く正確な知識が必要となります。

QLinuxで、標準Cライブラリが読み込まれず、C言語プログラミングができません・・・

僕の問題はタイトルの通りで、標準Cライブラリが読み込まれていないようで、C言語プログラミングができません。

ubuntuのオフィシャルから日本語ローカライズドDesktopCDをダウンロードして、空のHDDにインストールしました。
ですが、gnome-terminalからccコマンドでプログラムをコンパイルしても、標準Cライブラリにあるはずの<stdio.h>が認識されず、続くprinft関数も読んでくれません。

これはどうしてでしょうか?LinuxはデフォルトでCやらJAVAやらのプログラミングの環境が整っているものだと思っていたので、戸惑っています。何か、セットアップが必要なのでしょうか。

ちなみに、gccでも、標準ライブラリは読み込まれませんでした。

Aベストアンサー

#1の方が答えていますが、ubuntuでは開発環境はデフォルトではインストールされません。

コマンドが使えるのでしたら
$ sudo apt-get update
$ sudo apt-get install build-essential
で、
GUIでしたらsynapticを起動して「build-essential」を検索してインストールしてください。

これで標準のCの開発環境が整います。

Qwindowsコンパイラ

windows API32のプログラムを行いたいのですが、コンパイラは何を使えばいいのですか?

コンパイラは  Borland C++ BuilderX Personal(フリーのヤツ) を使っています。
このコンパイラでプログラミングできるでしょうか?
出来るとしたら、設定方法を教えてください

Aベストアンサー

Borland C++ BuilderX Personalでも、もちろんWIN32APIを使ったアプリを作ることができますが、今となっては古いので、
http://www.turboexplorer.com/jp/downloads
ここから、「TurboC++ Explorer」をダウンロードするか
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/
こちらのMSのページから、「VC++2005 Express」をダウンロード
された方が情報が得やすいかと思います。

ちなみに、BuilderX Personalだったら、
ファイル→新規作成→オブジェクトギャラリー→新規GUIアプリケーション
のプロジェクトウィザードの2ページ目でWin32 コンパイラツール
がチェックされていたらWIN32APIを使ったアプリを作っている
ことになるかと思いますが、そういう意味ではないのでしょうか?

QUNIX Cシェルで実数の比較

UNIX Cシェルで実数の比較がしたいのですが、
うまくいきません
以下のような結果になります。
うまく判定するにはどうすればよいのでしょう

#!/bin/csh -f
set CONSIZE=-0.01
echo "CONSIZE = $CONSIZE"
@ CONSIZE = $CONSIZE
if( $CONSIZE < 0.0 )then
echo " 0以下;;; $CONSIZE"
exit
endif

実行
CONSIZE = -0.01
@: 数値形式が正しくありません。

Aベストアンサー

整数しか扱えない為、そのままでは比較することができないようです。

bc を利用してみてはいかがでしょうか?

#!/bin/csh -f
set CONSIZE=-0.01
echo "CONSIZE = $CONSIZE"
set x = `echo "scale=3;if( $CONSIZE < 0 ) 1" | bc`

if( $x == 1 )then
echo " 0以下;;; $CONSIZE"
exit
endif

Qコンパイラについて

C言語で書かれたアプリケーションを利用するにはCのコンパイラが必要ですよね。ということはどんなOSにもCなりJAVAなりのコンパイラが搭載されているのでしょうか?だとしたらなぜ自分で書いたプログラムをコンパイルするときにOSが利用しているコンパイラを使えないのでしょうか?

Aベストアンサー

UNIX/Linux/FreeBsd等のUNIX系のOSでは、異なる環境への
移植性を高める為に、ソースプログラムを公開して各環境
毎にコンパイルして実行モジュールを作成する事が一般的
に行われます。(商用プログラムを除く)
その目的の為に、Cコンパイラが用意されています。

QUnix上のCで

有名なよく使われている科学計算用ライブラリは何でしょうか?
科学計算用ライブラリとは
連立一次方程式
行列演算(固有値、逆行列)
n次多項式の根
数値積分
などです

Aベストアンサー

GSL(GNU scientific library)というものがあります。
大方の数値計算はカバーしています。
下記URL参照。
http://na-inet.jp/na/gsl.html

また、線形計算については、LAPACKというFORTLANのライブラリが定評があります。
これをCに移植したCLAPACKというのがありますので、そちらを使われるのがいいでしょう。
下記URL参照。
http://www.view.human.nagoya-u.ac.jp/watanabe-lab/graduates/01year/hiroyuki/lab/clapack/

Qeclipseの設定のJREとコンパイラの違い

eclipseの設定で、インストール済みのJREとコンパイラの違いについて教えて
いただけないでしょうか。

自分で調べてみた限りでは、、、
インストール済みのJREは、Javaプログラムの実行、デバッグに使用される。
コンパイラは、Javaプログラムのコンパイルに使用される。コンパイラ自体はeclipse
内部のものを使用しており、コンパイラ準拠レベルを指定することにより、指定した
Javaのバージョンでコンパイルを行うことが可能。

上記の仕様だと、例えばインストール済みのJREのバージョンを1.6、コンパイラ準拠レベル
に1.4を指定したとします。こうした場合、

String s = "hoge";
if(s.isEmpty()) {
・・・・

というコードはコンパイルエラーになるはずです。(String#isEmpty()は1.6から導入)
コンパイルエラー⇒クラスができない⇒実行できない、という流れを想定していたの
ですが、実際は、エディタ上でエラーになっておらず、コンパイルもでき、実行もできました。
インストール済みのJRE、コンパイラともに1.4を指定すると、エディタ上でエラーに
なっていたし、コンパイルも行われていませんでした。

コンパイラ準拠レベルとはいったい???という状態です。
どこかに詳しく説明されているサイトなども教えて頂けるとうれしいです。
宜しくお願いします。

OS:Windows7 HomePremium
eclipse:eclipse-jee-indigo-SR1-win32-x86_64.zip

eclipseの設定で、インストール済みのJREとコンパイラの違いについて教えて
いただけないでしょうか。

自分で調べてみた限りでは、、、
インストール済みのJREは、Javaプログラムの実行、デバッグに使用される。
コンパイラは、Javaプログラムのコンパイルに使用される。コンパイラ自体はeclipse
内部のものを使用しており、コンパイラ準拠レベルを指定することにより、指定した
Javaのバージョンでコンパイルを行うことが可能。

上記の仕様だと、例えばインストール済みのJREのバージョンを1.6、コンパイラ準拠...続きを読む

Aベストアンサー

> インストール済みのJREとコンパイラの違い

これは質問者さんの理解でおおむね良いと思います。


コンパイラ準拠レベルが1.4なのに String.isEmpty() が通った理由ですが、参照した標準ライブラリが1.6のものだったから、ということになります。
コンパイラ準拠レベルは言語の準拠バージョンを指定します。文法と言い換えても良いでしょう。ですから String に含まれるメソッドの有無には影響を与えません。それらは参照しているライブラリ、つまり指定したJREに依存します。

コンパイラ準拠レベルを1.4にした場合は、foreach構文やジェネリクス、enum型などは使えないことが確認できます。これらは1.5以降の文法ですからエラーになります。

http://www.ne.jp/asahi/hishidama/home/tech/eclipse/java.html#%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E3%83%BC%E6%BA%96%E6%8B%A0%E3%83%AC%E3%83%99%E3%83%AB

> インストール済みのJREとコンパイラの違い

これは質問者さんの理解でおおむね良いと思います。


コンパイラ準拠レベルが1.4なのに String.isEmpty() が通った理由ですが、参照した標準ライブラリが1.6のものだったから、ということになります。
コンパイラ準拠レベルは言語の準拠バージョンを指定します。文法と言い換えても良いでしょう。ですから String に含まれるメソッドの有無には影響を与えません。それらは参照しているライブラリ、つまり指定したJREに依存します。

コンパイラ準拠レベルを1.4にした...続きを読む

QUNIX(Cシェル)での数値判断での条件分岐がうまくいきません。

いつもお世話になっております。
宜しく御願い致します。

if文で数値判断により条件分岐をしようと思ってます。

条件は”0<変数<=20”(仮)で、エラーだと警告文表示後に変数入力部に戻したいのです。

変数を画面上から”変数 = $<”で読み込み、処理をしたいのですが、うまくいきません。

整数値だとうまく行く方法を見つけましたが、小数値が入るとNG、小数値でもうまく行く方法を見つけました(bcを使用)が、文字列が入力されるとNG、と行き詰まってしまいました。

入力値としては小数値を期待しているのですが、操作する人が間違って”3..2”や”2 5”、”4rr”等が入力された場合も偽の判断をもって処理を戻したいのですが、ifの形式がおかしいとか、文法上のエラーがあると表示され、うまく戻ってくれません。

なにか良い方法はないでしょうか?

要は、if(変数 > 0 && 変数 <= 20) then で変数の値が文字列、小数、整数問わずに処理をしたいだけなんですが・・・。

どうぞ宜しく御願いします。

Aベストアンサー

expr等を使って正規表現で判断するしかないでしょうね。\| の前が小数値、後ろが整数値のチェックです。
expr以外でも正規表現が使えるコマンドなら何でもいいですが。

expr "$var" : '[0-9][0-9]*\.[0-9][0-9]*$' \| "$var" : '[0-9][0-9]*$' >/dev/null

if( $status == 0 ) then
 正常処理
else
 エラー処理
endif


人気Q&Aランキング