witchの日記: (ROBO)(メモ) X-52 ライブラリの静的リンク 3
「あなたそんなことも知らないの?」って知らなかったのか忘れたのかすら判らないですが…
「レッツバーニング!BBSの1216のスレッド」を見ていて「?」と思って Google してみた。
「C ライブラリ リンク」で出てくる一番最初のが
コンピューター:C言語講座:共有ライブラリについて
(小俣光之:コンピューターのページ(C言語講座))
ふむふむ。
で、試してみた。
%cat t.c
#include <stdio.h>
#include <math.h>
int main(int argc,char** argv){
if ( argc < 2 ) { exit(-1); }
printf("sin(%d): %f\n",atol(argv[1]),sin(atol(argv[1])*M_PI/180L));
}
%cc t.c -lm -o t1
%cc t.c /usr/lib/libm.a -o t2
%ldd t1
libm.so.6 => /lib/libm.so.6 (0x40020000)
libc.so.6 => /lib/libc.so.6 (0x40042000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
%ldd t2
libc.so.6 => /lib/libc.so.6 (0x40020000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
ふむふむ。
でも…「どの関数がどのライブラリにあるか」ってどうやって調べるの?覚えるもの?
(どのヘッダで宣言されているかは man を見れば判るんですが…)
まともなmanなら (スコア:1)
そして、全然まともでない環境ばかりの組み込みの世界とかだとnmとかのお世話になりっぱなしに。nm -n *.a|less とか…
-- Takehiro TOMINAGA // may the source be with you!
Re:まともなmanなら (スコア:0)
よくあるけれど、移行が難しい。
解b)ライブラリを自分で書く。
めったにないが、廃人になれる。
解c)そのほかの方法を探す。
できればこう行きたい。
んーと、 (スコア:1)