1.html
戻る次へ
【1㌻目です】

まず最初に、通常のビルドで使用されている、共有型Cライブラリを見てみましょう。静的Cライブラリ(libc.a)の拡張子はArchiveの略称である.aでしたが、共有ライブラリの場合はShared Objectの頭文字をとり、.soとなります。

-print-file-nameオプションを利用して、共有型Cライブラリlibc.soの格納場所をgccドライバに尋ねてみます。

/usr/lib/libc.so が目指すファイルですが、その内容は単純なテキストになっています。

リンカldは、共有型Cライブラリが指定されている場合は、/usr/lib/libc.so を参照し、その内容から、目的のライブラリ本体がGROUP行に記載された、/lib/libc.so.6であることを知ります。

int main(){
    u32 btn = *(vu16*)(0x04000130);
    if (btn & 0x00000001)
    {
        *(vu32*)0x06000000 = 0x001F;
    }
    while (1)
    {
    }
    return 0;
}
GNU開発ツール/(著:西田亙) より引用