Linux」カテゴリーアーカイブ

main function

さてスッゲェ久々に Linux で C/C++ をやるか。

コンパイルするのがメンドクセェ、Python スクリプトでイイじゃん…
てか今更 ++ の無い C はどうも、class が利用できないなんて考えられない…
とは言わないで、基本は大事だから。

Mandriva One の人は gcc が入っていないので gcc-c++ をソフトウエア管理から入れよう。

なんか Ubuntu とは随分違うんだけど、Mandriva の java うんちゃらって何だろう?
とにかくコレで Mandrina One でも C/C++ のコンパイルができる。

ということで早速超最小限の C 言語コードを書いてコンパイルしましょう。

#include <stdio.h>

main()
{
    printf("はろぉわーるど\n");
}

コレを少し奇妙に思った人は最初をすっとばして勉強している人。
main 関数が値を返していない、引数が無い、でもこれでコンパイルは通るんです。
Windows で C をやっているなら知らない人はいない粂井氏や赤坂氏もコレで始めていますよ。
つまり Visual Studio でやっても同じ結果、return 0; は実は書かなくても良かったりする。

C言語編INDEX
C言語入門

main 関数は仮引数を持たない関数、又は 2 つの仮引数を持つ関数として定義される。

int main(void) { /*...*/ }
int main(int argc, char *argv[]) { /*...*/ }

返却値の無い場合のホストに返させる終了状態は未定義である。
と、私のバイブルである「新ANSI C言語辞典」に書いております。

新ANSI C言語辞典

とりあえず返却値はゼロが戻れば Windows も Linux も正常終了とホストが解釈する。
やたら詳しいページを見つけたのでリンクしておきます、envp なんて初めて知ったよ。
main – 通信用語の基礎知識

ということで CUI なら Linux でも Windows とあまり違いが無いと解りました。
後は粂井氏や赤坂氏のサイトで(ぉい!

いや、もう少しやると思うけど配列とかの基本は本や既存のサイトで十分だもの。
こういう少しヒネクレたネタのほうが私は好きなのです。

Ubuntu 9.10 には build-essential はイラン

アクセスログを見て見つけたが

Ubuntu9.10を使っています。 Cの勉強をしてみたいと思っているのですが、gccの使い方について教えてください。 ソース内に日本を含み、シェルでの出力にも日本語を伴う場合.. – 人力検索はてな

> http://palepoli.skr.jp/content/ubuntu/mono.php
> 統合環境を使ったほうがお手軽です。

いや…
C をまったく知らない人にイキナリ総合開発環境を勧めるのはどうかと。
そのページを書いた本人も十年前は Windows にて BCC で勉強していた人なんですけど。

というか Emacs で文字コードがどうのって普通に保存すれば local と同じにならないのかな?
local は UTF-8 なんだから bash も当然 UTF-8 で出力するわけで、とりあえず cat しろと。
なんか気になったので仮想の Ubuntu 9.10 を立ち上げて適当にコンパイルしてみる。

やっぱり問題無い。
return かセミコロン書き忘れとか超くだらない理由じゃないのかと疑ってしまう。

しかしおかげで気がついた。
Ubuntu 9.10 には build-essential はイラン、最初から gcc がありヘッダも揃っている。
と以前 Blog には書いたと思うけど覚書のページは昔のまんまや!
書き換えなきゃ…でも今は日本で人気が薄い Mandriva Linux がメインな私ですけど。

ところで、今でも PyGtk よか mono や c の覚書ページのほうがアクセスが倍以上のまま。
Google のおかげで Python 知名度は上がったけど初心者の大半は C/C++ 開発に憧れている。
と勝手に解釈している、基本は C 言語であるというのは同意だし絶対に勉強しておけ。
だけど何故か Y901x のダウンロード数は増えて今月は既に百を超えているのって不思議。

それより、なんたって初心者御用達な Ubuntu でのプログラミングですので…
楽をしようと Python/PyGtk からプログラミングに入ると寒いアプリが乱立しそう…
VB に ActiveX コントロールを貼り付けただけで工夫の無いアプリみたいなのが再現…

やはり Linux で C/C++ のページをキチンと作ったほうがいいかなと思ってきた。
オブジェクト指向っていうけどソレってつまり実態に見せかけただけのポインタですから。

Double.NaN

びっくりした事

あれ?C# って Double ならモロに 0 で除算してもコンパイルエラーにならないんだ。
clr なら同じかなと思って IronPython で為してみたけど実行エラーが出るだけだった。
てか文法が合っているなら普通の Python でもこの強引なコードで読み取りは通るんだね。

def check():
    print 0/0
input("wait: ")
check()

C# も為してみようと思ったけど仮想 Vista を立ち上げるのが面倒なので mono でやってみる。
Mandriva One GNOME は gcc がデフォでは入っていないくせに gmcs はしっかりあるんだよね。
ま、最近の GNOME なら全部入っているだろうけど。

ということで

Console.WriteLine(0/0);

だと mono でもしっかりコンパイルエラーになります、忠実に再現しているのね。

Double.NaN フィールド (System)

コレも当然動く。
こういうのって便利なのだろうか?普通に例外を吐くだけのほうが楽だと思うのだが。

Flash でなく Gnash を Ubuntu 9.10 に入れてみた

優先度の高いフリーソフトウェアプロジェクト
というのが Linux にはあると今頃知った。

High Priority Free Software Projects – Free Software Foundation

PDF と Flash が最優先とは、Adobe 総攻撃だ。
といってもどちらも仕様が公開されてえいるはずなんだけど。

PDF はともかく Flash はやはり汎用アプリが欲しいところだ。
この普及率で一社独占だし、いつまでたっても 64bit 正式版が出ないし。

オープンソースのFlashプレイヤー「Gnash」 – GIGAZINE

ま、Flash に関しては Mandriva はデフォルトで本物が入るから私には関係無い。
それより今や yum, rpm, deb, tar.gz にて本家で公開されているので今更感もあるけど。

と思ったけど仮想な Ubuntu 9.10 にはまだ入れていなかったのを思い出した。
Opera も GStreamer codec も何も入れていないんだが、つまり使っていない。
せっかくなのでコイツに入れて試してみよう。

Synaptic からでないと mozilla-plugin-gnash は入れられない。
別にコマンドでもいいけど…

synaptic

の 3 つにチェック。
でインストールできたのかな?

gnash_plugin

よしよし、軽く Flash 広告のあるサイトを回ってみる。

gnash_setting

うん、このくらいなら問題なく動くようで。
右クリックで出せる設定も本家より細かく指定できるのがこの手のアプリっぽい。
次は YouTube だ。

gnash_youtube

あれ?以外だ、GStreamer codec を入れたら再生できちゃった。
Flash のアクセラレータが効かない環境の人はコッチのほうが都合がいいかも。
得に x86_64 の人ならコッチを選ぶのも考えたほうがいいかな。

再び Fedora 12 で x86_64 ATI

以前 Fedora 12 x86_64 で compiz が有効にできないと書いたけど
こんなページを見つけた。

Fedora 12 ATI Catalyst Drivers | Fedora Linux

よしやってみよう。
と思ったけど実は弄くりすぎて起動できない状態なので再インストール。

直後に一応「デスクトップ効果」メニューを選択してみる。
あれ?有効にできちゃった。

compiz_fedora

このメニューに気が付く前に色々弄くったのが原因だったのかも。
少なくとも xorg.conf が他の要因で作成される前に有効にしたほうが良さそう。
x86_64 用 Flash を入れてみたけどやっぱり Mandriva とは違い Flash が重たいまま。

とりあえず上記リンク先の奴も入れてみよう。
コマンドを打たずとも「「ソフトウエアの追加と削除」で入れられるお。

mesa

さてどうなった?
予想していたけど重たいままで何も変わらないや。
Mandriva One 32bit ならこんな作業は全部不要で軽いのに面倒くさい…

てゆーか WordPress で Flash アップローダが使えないや!
64bit Flash はまだ常用には辛いね、32bit Fedora にしたほうが良さそう…

ところで ccsm をインストールしても何も設定できないのは何故だろう?
今日はココまでで止めておきます、もう少し調べてから。