まず最初に、通常のビルドで使用されている、共有型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; }