2012-12-01から1ヶ月間の記事一覧

共有ライブラリを認識させる

OSは、Fedora17を利用しています。 libdwarf.soという共有ライブラリを手動で/usr/local/libディレクトリにインストールした時の話です。 /libディレクトリと/usr/libディレクトリはデフォルトで共有ライブラリーの含まれていますが、FedoraやCentOSでは/usr…

fcallについて

fcall,libffiで実行時にシグネチャーを指定して関数を呼び出すことができます。 実行時に困ったので、困ったところのみメモして置きます。fcallは、-lavcall libffiは、-lffi をそれぞれリンクすると使える。 参考文献 Binary Hacks

読む技術(SQ3R)について

SQ3Rは、リファクタリングウェットウェアという本の中で紹介されていた方法です。効率的に本を読むです。SQ3Rは、次に示す5つのワードの頭文字を集めたものです。 以下は、本の引用です。 Survey(調査) 全体の要旨をつかむために目次と各章の要約を流し読…

libfdのリンクに失敗する問題

ls -al /usr/lib/libbfd.so自体はいるが、リンクエラーになる。 通常、シンボリックリンクになっているはずらしいが、lsコマンドで見てもリンク先が表示されなかった。そのため、ls -al /usr/lib/libbfd*をすると/usr/lib/libbfd-2.22.52.0.1-10.fc17.soがあ…

プログラムがmain()にたどりつくまで

この話は、最近読んでいるBinary Hacks ―ハッカー秘伝のテクニック100選作者: 高林哲,鵜飼文敏,佐藤祐介,浜地慎一郎,首藤一幸出版社/メーカー: オライリー・ジャパン発売日: 2006/11/14メディア: 単行本(ソフトカバー)購入: 23人 クリック: 383回この商品…

bashとglibcのソース

オープンソースはソースコードが誰にでも無料で公開されています. linuxやそのツール郡は, すべてオープンソースです. 普段お世話になっている基本的なソフトウエアは、GNUプロジェクトで公開されています。http://www.gnu.org/software/software.html bash…

Linux版のjavaで文字が□になる問題

linux版のastahのzip版をダウンロードして、さっそく起動したら、文字が□になる問題が発生しました。 世にいう豆腐問題です。ずっと前にも見たことがありましたが、どうやって解決したか忘れました。 とりあえず、いろいろ調べてみる。 利用しているJavaを調…

非同期シグナルを同期的に扱う

sigwaitを利用して、シグナル受信スレッドを作成してしまおうというのがアイディア。 #include <pthread.h> #include <sys/time.h> #include <sys/select.h> #include <signal.h> #include <stdio.h> void *wait_for_sighup(void *dmy) { int sig; //sig_wait関数はSIGHUPを待つ sigset_t ss; sigemptyset(&ss); sigad</stdio.h></signal.h></sys/select.h></sys/time.h></pthread.h>…

Javaでシグナルをキャッチする

linuxではお馴染み、シグナルをjavaでキャッチする方法です。 SIGHUPをキャッチします。vim sample.java import sun.misc.Signal; import sun.misc.SignalHandler; class SignalTest { static int sig = 0; public static void main(String[] args) { Signal…

LinuxでJava開発

linuxでJavaの開発をするためにjavacをインストールしました。 インストール方法のメモです。 rootで下記をインストール yum install java-1.7.0-openjdk-develテストです。 vim sampleTest.java class Sample { public static void main(String[] args) { }…

Canvasを使う

本屋などにいくとhtml5でつくるゲームとかの本が結構あるので、少し触ってみた。ほとんど詳しくないので基礎的なことしかできなかった。とりあえず、キャンバスの背景設定と図形を書いて、定期的に移動するようにして見た。javascriptはまだ全然分からない。…

HTTPプロトコル(302ステータス)

友達から質問を受けて少し勉強しました。ソケット通信は最近あんまりつかってなかったので再度勉強した。ソケット通信でサーバ側でやることは ソケットの生成 bind listen acept 送受信処理 です。こんな感じのソース書いた。 #-*- coding: utf-8 -*- import…

D_FORTIFY_SOURCEを使う

これもバッファーオーバーフロー検出に関するお話。 gcc4からの機能です。使い方 (o1以上の最適化オプションをつける) gcc -O1 -D_FORTIFY_SOURCE=1 foo.c検出時は、下記のいずれか コンパイル時 実行時 これの機能のすごいとこは、リリースビルドで使えると…

Mudflapを使う

gcc4から使える機能です。バッファーオーバーフロー検出ツールです。 メモリの割り当てとして、ヒープ領域、bss領域、stack領域などがあります。このツールでは、下記のようなケースが検出されました。 /* test.c */ static char onbss[128]; int main(void)…

grub2からエントリーを削除

Linuxカーネルソースをビルドしてインストールした場合、 package-cleanup --oldkernels --count=1では削除されない。※これで削除した場合は、エントリーも削除される。起動時には、grub2がエントリーを表示してくれるが、それを手動で削除しないといけない…

kernelソースの取得

久しぶりの更新です。linuxカーネルのソース取得に関してです。 家では、Fedora17を利用しています。現在デバイスドライバのソースコードを書いたりしていますが、fedora用にカスタマイズされたソースコードの取得方法をメモって置きます。 ソースの取得 yum…