お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2008-12-18 18:02:01

kaku
新しいメンバ
登録日: 2008-12-17

Cコンパイラ

ubuntuにはgccと呼ばれるコンパイラがあると聞きました。
インストールの仕方、使い方など調べたのですがいまいちよくわかりません。
自分はubuntu8.10を使っていてubuntuもC言語も初心者でこれから勉強しようと思っているものです。
わかりやすく説明しているサイトなどあったら教えてください。

オフライン

 

#2 2008-12-18 19:05:04

avidya
ゲスト

Re: Cコンパイラ

 とりあえず、Synaptic パッケージ・マネージャで build-essential をインストールすると C と C++ のコンパイル環境はそろいます。
 統合開発環境としては Eclipse とかありますね。他にもさがせば、gnome 向けのもっといい統合開発環境が見つかるかもしれません。
 個人的な意見ですが、プログラム言語を覚えるなら、サイトより本の方が頼りになるかと思いますが。

 

#3 2008-12-18 19:12:44

kaku
新しいメンバ
登録日: 2008-12-17

Re: Cコンパイラ

ありがとうございます。
書店で本を探したのですがwindows向けのものが多くて最初の設定などの仕方で困っています・・・
基本は変わらないと思うのでいろいろ試しながらやっていこうと思います。

オフライン

 

#4 2008-12-18 21:07:20

avidya
ゲスト

Re: Cコンパイラ

 私が昔 UNIX 用のプログラムを書いていた時は、MS-DOS 時代のように Makefile を自分で作成して、コンパイルからリンクまでしていました。
 最近は Linux 上で動く統合開発環境があるので、build-essential と C++ 対応の統合開発環境をインストールするのが楽かと思います。
 ちなみに Microsoft Visual Studio と同等の統合開発環境は、いまのところ私は発見していません。
 このあたりは現役のプログラマの方にフォロー願います。

【追記】
 こんなものを発見しました。Ubuntu ではソースからビルドする必要があるようですが、スクリーンショットを見るかぎり、なかなか使い勝手がよさそうです。

最後の編集者: avidya (2008-12-18 21:19:58)

 

#5 2008-12-18 22:43:28

kaku
新しいメンバ
登録日: 2008-12-17

Re: Cコンパイラ

導入できました皆さんありがとうございます。
導入後、コンパイルするためのコマンドがわからないのですが・・・??

私は本当に何もわからない初心者なのでいまいちavidyaさんが教えてくださったサイトが理解できない部分があります。なので最初の最初を本などで勉強した後活用させていただきます。

最後の編集者: kaku (2008-12-18 22:47:38)

オフライン

 

#6 2008-12-18 22:48:36

Cametan
メンバ
登録日: 2007-08-12

Re: Cコンパイラ

>コンパイルするためのコマンド

それがgcc、ですよ。

例えばWindowsでBorland Cなんかを使ってもbcc 何とやら、と打つと思います。
それと同じ、です。
例えばhoge.cと言うファイルを作ったとしたら、端末で

gcc hoge.c

とすればa.outと言う実行ファイルが生成されます。

例えばEmacsなんか使っての設定だと次の記事が詳しいですね。ご紹介しておきましょう。

Emacs で C 言語プログラミングを始める人へのイントロダクション:
http://at-aka.blogspot.com/2006/12/emacs-c.html?showComment=1220474760000

オフライン

 

#7 2008-12-19 00:45:39

kaku
新しいメンバ
登録日: 2008-12-17

Re: Cコンパイラ

#include<stdio.h>
void main()
{
    printf("hello,ka!");
}
これをコンパイルすると
hello.c: In function ‘main’:
hello.c:4: error: expected ‘;’ before ‘:’ token
hello.c:3: 警告: return type of ‘main’ is not ‘int’
のように出てくるのですが何が問題ですか??

オフライン

 

#8 2008-12-19 01:21:13

Cametan
メンバ
登録日: 2007-08-12

Re: Cコンパイラ

>何が問題ですか??

main関数は原則、intじゃないとダメです。
この辺、色々議論があるんですが、void mainじゃなくってint mainにした方が良い、です。
また、正常実行した事をした事を示すため、return 0;はつけましょう(平たく言うと、これがint mainのintの意味です)。

ですから、正しいコードは、

#include<stdio.h>

int main()            /* void mainじゃなくてint mainではじめる */
{
    printf("hello,ka!");

    return 0;             /* main関数は必ずreturn 0;を置く */
}

ですね。

あと、C言語自体に関してはこちらのフォーラムよりも、専門のサイトを参照した方が良いでしょう。
次のサイトを紹介しておきます。

猫でもわかるプログラミング:
C言語編 第1部:
http://www.kumei.ne.jp/c_lang/index_c.html

C言語編 第2部
http://www.kumei.ne.jp/c_lang/index_c2.html

最後の編集者: Cametan (2008-12-19 01:28:06)

オフライン

 

#9 2008-12-19 21:34:01

kaku
新しいメンバ
登録日: 2008-12-17

Re: Cコンパイラ

端末でXXX.outを実行し知場合はどのようなコマンドを使えばいいのでしょうか?

オフライン

 

#10 2008-12-19 22:24:53

Cametan
メンバ
登録日: 2007-08-12

Re: Cコンパイラ

>端末でXXX.outを実行し知場合はどのようなコマンドを使えばいいのでしょうか?

Linuxの場合、Windowsと違って、目的の実行ファイルに「実行権限」を与えないといけません。
例えば、コンパイル済みのa.outと言う実行ファイルの場合、chmod命令を使って、端末で

chmod +x a.out

とします。
(実はその辺のEmacs用ショートカットが以前提示したブログ
http://at-aka.blogspot.com/2006/12/emacs-c.html?showComment=1220474760000
に記載されているのですが)

そして、実行ファイルが(殆どのケースではそう思うんですけど)HOMEに置いてある場合、実行コマンドは

./a.out

です。「./」ってのは「今いるディレクトリの中の」って意味ですね。他のディレクトリを使っている場合はフルパスで指定する必要があるでしょう(まあ、通常は特にパスを通してないと思うんで)。

そんなところでしょうか?

開発環境に何を用いているのか分かりませんが、Emacsだったら先ほど提示しているブログが為になりますよ。Emacsで入出力伴わないプログラムだったらC-!辺りでバッファで実行結果見れますしね。

オフライン

 

#11 2008-12-19 22:29:43

tubame
新しいメンバ
登録日: 2008-12-19

Re: Cコンパイラ

 こんばんわ。まったくの素人です。UbuntuをDELL Inspiron1100でCDブート起動させると画面が小さく全画面表示になりません。
 INSPIRONとは相性が悪いのでしょうか?なにか方法がありますか。 お教え頂ければ幸いです。

オフライン

 

#12 2008-12-20 02:49:41

Cametan
メンバ
登録日: 2007-08-12

Re: Cコンパイラ

>>tubameさん

誤爆だとは思いますが(笑)。

新しいスレッド立てるなり何なりして聞いた方が良いとは思います。
DELLユーザーは結構いると思うんで、レスは付きやすい、とは思います。
個人的には、DELLと素のUbuntuは相性が良くない、って話は確かに聞いた事はありますが、DELLは持っていないので何とも言えませんね。

オフライン

 

#13 2008-12-20 15:43:33

CMasami
拒否
From: Utsunomiya
登録日: 2007-12-13

Re: Cコンパイラ

※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。

最後の編集者: CMasami (2008-12-20 15:45:41)

オフライン

 

#14 2008-12-21 22:20:16

cjohn
メンバ
登録日: 2008-12-21

Re: Cコンパイラ

便乗質問です。
#include <stdio.h>

int main()
{
    printf("Hello! World\n");
    return 0;
}

と書いたところ実行結果が「Hello! World\n」と表示されます。
\nは改行して欲しいのですが、文字として「\n」が表示されてしまいます。
何が原因なのでしょうか?

[環境]
Ubuntu 8.10 x64 (本家からダウンロード)
Eclipse 3.2からビルド

オフライン

 

#15 2008-12-21 23:09:47

UbonroPoo
メンバ
登録日: 2007-06-17

Re: Cコンパイラ

私の環境では、質問中のコードをコンパイルして実行しても、
正しく改行で終了し、リテラルとしては表示されません。

不正なコードをコピー&ペイストされましたか。

Windows の UTF では、U+005C と U+00A5 との混同が
あるようですが。

最後の編集者: UbonroPoo (2008-12-21 23:11:22)

オフライン

 

#16 2008-12-22 22:17:31

cjohn
メンバ
登録日: 2008-12-21

Re: Cコンパイラ

やはり普通は改行されるのですね。
ソースはEclipseで入力したのでコピー&ペーストはしていません。
試しにgeditでも入力してみましたが、やはり¥nが文字として表示されます。
もう少しいろいろやってみます。
#x64英語版なのがどこかで悪さしている?

オフライン

 

#17 2008-12-22 23:15:27

toshio
メンバ
登録日: 2007-11-14

Re: Cコンパイラ

やはり文字コードが正しいかまず調べてみると良いのではないでしょうか。

ソースファイル名をhoge.cとして、端末から、
$ hd hoge.c
と実行してみてください。
ご存知かもしれませんが、hdは入力ファイルの内容を1バイトずつ、左側に16進数で表示し、
右側には文字として表示します。

\nに該当する箇所のコードが5c 6eとなっていたら正しい文字コードですので、別の原因を考える必要ありです。
そうでなければ、何らかの理由で文字コードが意図したものと違っているのが問題です。

オフライン

 

#18 2008-12-23 18:23:42

cjohn
メンバ
登録日: 2008-12-21

Re: Cコンパイラ

ありがとうございます。
hdコマンド初めてしりました、便利ですね。
(確認のためにバイナリエディタを探してました)
¥nを確認したところ、C2 A5 6Eになってます。
Eclipse側の設定は「Inherited from container(UTF-8)」になっています。
gccはどのエンコーディングの文字列を受け付けるのでしょうか?

#gccは昔DOSでDJGPPを使ったっきりです。。。
#当時はUNICODEなんてなかったし

オフライン

 

#19 2008-12-23 18:47:40

CMasami
拒否
From: Utsunomiya
登録日: 2007-12-13

Re: Cコンパイラ

※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。

オフライン

 

#20 2008-12-23 21:35:33

cjohn
メンバ
登録日: 2008-12-21

Re: Cコンパイラ

右Shiftの左にある「/」キーで入力したところ、改行されました。
ありがとうございます!

期待通りの動作をするソース

#include <stdio.h>

int main()
{
    printf("Hello! World\n");
    return 0;
}

¥と\を区別するというのがカルチャーショックです・・・

オフライン

 

#21 2008-12-24 21:25:42

Yoichi
メンバ
登録日: 2008-09-18

Re: Cコンパイラ

便乗質問で申し訳ないのですが・・・。

¥nが改行コードであることは、実際にC言語を使う前から知っていました。
改行コードがあるなら、Tabコードもあっていいような気がして、いろいろ調べましたがわかりません。
入門書には全く載っておらず、検索をかけてもわかりませんでした。
Tabコードは存在するのですか?

直接的な回答を好まれないなら、参考サイトの紹介でもお願いします。

オフライン

 

#22 2008-12-24 21:39:10

Hanrin
新しいメンバ
登録日: 2008-12-21

Re: Cコンパイラ

Yoichi による投稿:

便乗質問で申し訳ないのですが・・・。

Tabコードは存在するのですか?

直接的な回答を好まれないなら、参考サイトの紹介でもお願いします。

こんばんは。はじめまして。

タブは¥tですね。

ちなみに¥0はNULL
¥vは垂直タブ
¥bは、カーソル1文字後退、などの意味をもっています。

このように¥と組み合わせて1文字を表す表記を、拡張表記(escape sequence)と言います。

オフライン

 

Board footer

Powered by FluxBB