タグ

UNIXとLinuxに関するhitsujibaneのブックマーク (48)

  • Wataru's memo(2006-07-18)

    ● [UNIX] malloc failure (その2) リンク方式に見る Linux と BSD の違い failmalloc の仕組みを理解するためには、"動的リンク" に関する知識が必要になります。C言語によるプログラム開発は、プリプロセス・コンパイル・アセンブル・リンクの4工程を経ますが、最後のリンクはその方式により、動的リンクと静的リンクのふたつに分類されます。 BSD 環境では、危機管理のためにシステムの基幹部分に関するプログラムは静的リンク、それ以外の一般ユーザーアプリケーションは動的リンクにより作成されています。 これに対して、Linux 環境ではほぼ全てのプログラムが動的リンクにより作成されています(Debian Sarge で確認したところ、静的リンクで作成された実行可能ファイルは /sbin/ldconfig ただひとつでした)。この事実が意味するところは、これから

  • malloc failure (その1) - Wataru's memo(2006-07-15)

    ● [UNIX] malloc failure (その1) failmalloc と危機管理 奥地氏の enbug diary で、とても刺激的なお題を見つけました。failmalloc と呼ばれる共有ライブラリパッケージを使ったお話ですが、要は "意図的にメモリ確保に失敗する malloc 共有ライブラリ" を使い、メモリ管理を内部で正しく行っているかどうか、"外部から" 簡単に検証してみようというものです。 failmalloc は英文の紹介ページですが、その内容はさすがです。なぜ、氏がこのような事を思いついたのかは、次の一言に集約されています。 経験不足な人が書いたコードはエラーチェックが無茶苦茶である。 要するに、失敗することを考えていない。 後で述べますが、私は Linux 環境もまた「失敗することを考えておらず、危機意識に欠けている」と常々感じていましたので、failmallo

  • UNIX のフォント事情

    2016-07-21: このページの記述は古いうえに、(当初から)致命的に間違っている箇所があります。 今のところ気づいているのは、 ヒンティングの強弱と LCD レンダリングモードの直交した指定ができないというのは大嘘。当時から FreeType のリファレンスにちゃんと説明がある。 Firefox のレンダリングは cairo に移行済。 LCD フィルタは freetype 側に実装され、現在では多くの環境で適切に使用されている。 cairo で hintstyle の設定が無視される問題は Bugzilla を見る限りまだ残っているように思えるけれど、手元で試した感じでは反映されているような…。気のせいかも(適当)。 pango は HarfBuzz に移行。 TrueType のバイトコードヒンティングは、 2.6.4 で水平方向のヒンティング命令を無視する処理が追加され、サブピ

  • Autotoolsの簡単な使いかた (2) - I.S.の日記

    前回に引き続き、Autotoolsの簡単な使いかたの解説です。 autoheader 前回はconfigure.inの修正まででしたが、次はautoheaderを実行します。autoheaderは主にconfig.h.inというfileを生成するために実行します。config.h.inは処理系依存のmacroを集めたheader fileであるconfig.hの元になるfileです。 $ autoheader $ ls autom4te.cache autoscan.log config.h.in configure.in hoge.cppこれでconfig.h.inが生成されたはずです。autom4te.cacheというdirectoryは今回は直接関係ありませんので、説明は省略します。 aclocal 前回configure.inにAM_INIT_AUTOMAKEというmacroを追加

    Autotoolsの簡単な使いかた (2) - I.S.の日記
  • Autotoolsの簡単な使いかた (1) - I.S.の日記

    Compiler言語で開発する際、makeのお世話になることが多いと思います。そういうときに自前でMakefileを書くのもいいのですが、処理系ごとの違いを吸収し、それを反映したMakefileを自動的に作成してくれるような便利なtoolがあります。それがAutotoolsです。 Softwareを自分でcompileしてinstallしたことがある方なら以下のようなcommandを使ったことがあるかもしれません。 $ ./configure : $ make : $ sudo make install :このconfigureこそがAutotoolsで生成されたscriptです。configureを実行することによって、処理系ごとの違いを判別し、Makefileを自動的に生成します。 では、Autotoolsを使うにはどうすればいいのでしょうか。これから順を追って説明していきましょう。各

    Autotoolsの簡単な使いかた (1) - I.S.の日記
  • モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人

    まだC, C++がないようなので書いてみた。主にLinux(DebianとかUbuntu)での環境構築について。 コンパイラ まずはapt-getでコンパイラをインストールする。UbuntuやDebianなら以下のコマンドでgccやg++および標準ライブラリ等がインストールされる。 $ sudo apt-get install build-essential デバッグツール デバッガおよびデバッグツールは少なくとも以下の三つは入れる。(あとltraceも欲しいかな?) GDB 言わずと知れたGNUのデバッガ Valgrind メモリリークや不正メモリアクセスの検出 strace システムコールのトレース $ sudo apt-get install gdb valgrind strace ビルドツール C, C++のビルドツールといえばまずmakeが浮かぶけど、最近ではSConsやCMak

    モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人
  • 知っていると便利な gcc のオプション

    back GNU gcc を使う際に知っていると便利なオプションを挙げておきます。 注意: これが全部ではありません。gcc には、ほかにも プロセッサ依存の細かいオプションが山のようにありますが、それらは ふつうあまり利用しないので省略しました。 一般的なオプション -c, -o, -I, -g, -O, -L, -l 省略。それくらい知ってること。ちなみに -L と -l は ld へのオプションであり、順番が重要である。 -pipe 各ステージ間で情報のやりとりをするのに temporary file を使わず、 pipe を使うようにする。このオプションが Makefile などに 含まれているときは、たいてい除いたほうがよい。なぜなら、 多くのシステムでは、アセンブラ側がパイプに対応してないから。 言語仕様に関するオプション -ansi 厳格な ANSI 仕様でコンパイルする。こ

  • ファイルディスクリプタについて一覧

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    ファイルディスクリプタについて一覧