差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
gnustep:helloworld [2025/05/22 19:58] – freemikan | gnustep:helloworld [2025/06/13 12:45] (現在) – Replace ObjC with Objective-C freemikan | ||
---|---|---|---|
行 1: | 行 1: | ||
====== Hello World ====== | ====== Hello World ====== | ||
- | + | [[gnustep:|{{: | |
- | {{: | + | |
まずは、Objective-Cによって書かれたHello Worldプログラムを実行することを目標とします。 | まずは、Objective-Cによって書かれたHello Worldプログラムを実行することを目標とします。 | ||
行 7: | 行 6: | ||
===== Hello Worldのソースコード ===== | ===== Hello Worldのソースコード ===== | ||
- | 以下のコードを | + | 以下のコードをhello.mとして保存します。 |
- | ObjCのソースファイルは拡張子を__.m__とするのが通例となっているのでそれに習います。 | + | Objective-Cのソースファイルは拡張子を「.m」とするのが通例となっているのでそれに習います。 |
<code objc> | <code objc> | ||
行 22: | 行 21: | ||
</ | </ | ||
- | これが最小のObjC+GNUstepのコードというわけではありませんが、十分に短く、かつ、GNUstepの環境が整っていなければビルドできないので、テスト素材としてはちょうどよいです。 | + | これが最小のObjective-C+GNUstepのコードというわけではありませんが、十分に短く、かつ、GNUstepの環境が整っていなければビルドできないので、テスト素材としてはちょうどよいです。 |
行 41: | 行 40: | ||
</ | </ | ||
- | 拡張子が__.d__の__hello.d__は依存するヘッダファイルをMakeが認識するフォーマットでダンプされたものです。 | + | 拡張子が「.d」のhello.dは依存するヘッダファイルをMakeが認識するフォーマットでダンプされたものです。 |
このファイルはgccに'' | このファイルはgccに'' | ||
行 53: | 行 52: | ||
この出力をgccのオプションとして利用するために、シェルのコマンド置き換えの機能を利用しています。 | この出力をgccのオプションとして利用するために、シェルのコマンド置き換えの機能を利用しています。 | ||
- | '' | + | '' |
<cli> | <cli> | ||
行 64: | 行 63: | ||
<cli> | <cli> | ||
- | $ gcc hello.o | + | $ gcc -o hello hello.o |
</ | </ | ||
- | GNUstepの環境に問題がなければ、gccに'' | + | GNUstepの環境に問題がなければ、gccに'' |
<cli> | <cli> | ||
行 74: | 行 73: | ||
</ | </ | ||
- | 確かに__hello__が生成されています。 | + | 確かに実行可能バイナリファイルhelloが生成されています。 |
これを実行してみます。 | これを実行してみます。 | ||
行 86: | 行 85: | ||
- | < | + | < |
- | **gccに与える入力ファイル__hello.o__の位置は意味を持ちます。** | + | **gccに与える入力ファイルhello.oの位置は意味を持ちます。** |
例えば、次のようにしてしまうとリンクはパスしません。 | 例えば、次のようにしてしまうとリンクはパスしません。 | ||
行 96: | 行 95: | ||
< | < | ||
- | gnustep-configのオプションには'' | + | gnustep-configのオプションには'' |
- | しかし、今回はこれを使いません(使えません)。 | + | しかし、今回はこれを使いません(使えません)。 |
- | '' | + | '' |
</ | </ | ||
===== Objective-CとGNUstepの関係について ===== | ===== Objective-CとGNUstepの関係について ===== | ||
Objective-Cはもちろんプログラミング言語ですが、言語単独では極めて使い勝手が悪いです。 | Objective-Cはもちろんプログラミング言語ですが、言語単独では極めて使い勝手が悪いです。 | ||
- | C言語のスーパーセットである(つまり、C言語として使うことができる)ことを除けば、ほとんど何もできないといってもいいくらいです。 | + | C言語のスーパーセットである(つまり、C言語として使うことができる)ことを除けば、ほとんど何もできないといってもいいくらいです。 |
AppleのObjective-Cによるプログラミングを支えるのはFoundationフレームワークとCocoaフレームワークであり、切り離すことは困難です。 | AppleのObjective-Cによるプログラミングを支えるのはFoundationフレームワークとCocoaフレームワークであり、切り離すことは困難です。 | ||
GNUstepはFoundationフレームワーク及びCocoaフレームワークの代替となります。 | GNUstepはFoundationフレームワーク及びCocoaフレームワークの代替となります。 |