タグ

Cとlinuxに関するakaneharaのブックマーク (5)

  • C言語 Super Technique 講座

    このページは、C言語の中級テクニックを中心に解説する。長らくプログラマをしていると、C言語の面白い使い方例が蓄積している。これらを一挙公開するために、このページを作ったのである。しかし、単にCに留まらず、他の言語の面白い特徴なども紹介していく。 内容的にはかなりヘヴィである。当然のことながら、「ポインタ虎の巻」程度の内容はちゃんと使いこなせることを前提とする。意外な技、落し穴、派手なテクニックなど、内容満載だが、ちゃんとデータ構造とアルゴリズムなども説明できれば良いと思う。(まあ、ぼちぼちやってきいます...) 以下の目次には手引きのために、評価がつけてある。凡例として示す。 レベル その解説で記載されている内容のレベル 有用度 その内容が実際に役に立つものかどうか 邪悪度 その内容が薦める方法が、一般的なコーディング規約の中で「邪悪」とされがちなものであるか否か。関数ポインタの活用(濫用

  • configureスクリプトとは何なのか

    Home Subscribe configureスクリプトとは何なのか 19 February 2015 おはこんばんちは!! 尾藤 a.k.a. BTO です。 みなさん Unix のパッケージをインストールする時、configureスクリプト実行しますよね。 なんかいっぱいいろんな事してるみたいで便利そうですよね。 でも実際は何をしてるんでしょうね。 configureスクリプトの出力見てますか? エラーが起きたときしか見てない事ないですか? 先日、よく使ってるんだけどよく知らないと思われる configure スクリプトの正体について、オトバンクで勉強会をやりました。 魔法の呪文 ./configure && make && make install よく打っているコマンドだと思いますが、これだけで解決します。 素晴らしいですね!! GNU Autotools configure

    configureスクリプトとは何なのか
  • Linux共有ライブラリの簡単なまとめ - wagavulinの日記

    Linuxで共有ライブラリ(*.so)を作るようになったのでちょっと勉強してみた。今までは使うだけだったので、以下のようなことは知っていた。作るときはgccの-sharedオプションを使う。使うときはgccの"-lライブラリ名"でリンクするライブラリを指定する。リンク時のライブラリ探索パスは-Lオプションで指定する。実行時のライブラリ探索パスは/etc/ld.so.confに書いてあるディレクトリ。環境変数LD_LIBRARY_PATHでも指定可能。ライブラリを作るときは、.cから.oを作るときに-fPICをつけるといいらしい。新しくライブラリを入れたときはldconfigするといいらしい。逆に今まであまり知らなかったこと。ほとんどのライブラリはlibhoge.so, libhoge.so.1, libhoge.so.1.1のように3つくらいのファイルがあり、libhoge.soやlibh

  • mmapのほうがreadより速いという迷信について - kazuhoのメモ置き場

    @ITに以下のような記事が出て、 今回からしばらくの間は、まったく逆の例、つまり使うとプログラムの処理性能が上がるというシステムコールを紹介していく。システムコールを呼ぶ回数は少ない方が処理性能は高くなるという原則は変わらないが、呼び出しておくと処理性能が向上するシステムコールというものが存在するのだ。こうしたシステムコールを使わないでいることは、とてももったいない。 今回紹介するシステムコールは「mmap(2)」だ。ここでは詳しく仕組みを解説しないが、mmap(2)は、プログラムの処理性能に必ず良い影響を与える。 やはりあった? 高速化に効くシステムコール (1/2):知ってトクするシステムコール(3) - @IT それを真に受けたのか、「Go言語でmmapシステムコールを使ったファイル読み込みの高速化検討とC言語のコンパイラの話 - ryochack.blog」のようなブログエントリも

    mmapのほうがreadより速いという迷信について - kazuhoのメモ置き場
  • 第9回 機能拡張でよく使われる共用体(union)

    構造体によく似たC言語の機能に「共用体」(union)があります。これは,IPv4をIPv6に拡張するときなど,カーネルの機能を拡張する際によく使われます。共用体の使い方とカーネルでの利用例を実際に見ていきましょう。 カーネルは,機能がよく拡張されます。例えば,ネットワーク・プロトコルの「IPv4」と「IPv6」の関係です。現在の主流はIPv4ですが, LinuxカーネルはIPv6に対応しています。ソース・コードを見ると分かるように,IPv6のコードを一から書いているのではなく,IPv4を処理する部分でIPv6と共用できるところを機能拡張しています。ここで使うのが,「共用体」(union)です。 共用体は,カーネル内部のあらゆる部分に利用されています。カーネルの読者にはとても大事なものですが,C言語の教科書の多くには詳細な解説がありません。そこでまず最初に,共用体とは何かを説明しましょう。

    第9回 機能拡張でよく使われる共用体(union)
  • 1