とあるD言語のライブラリをビルドすると,libhoge.aというファイルが生成された.
もちろんこのファイルの意味は知っている.共用じゃないライブラリだ.
はて,これをリンクさせるにはどうすればよいのだろう…
gccでは, libhoge.a があるディレクトリ/aを,
-L/a
して,
そのファイルを
-lhoge
みたいな,libと拡張子を除いた名前で指定してやれば良い…
要するに,main.cをコンパイルするときにリンクしたいなら
% pwd
/a
% ls
main.c libhoge.a
% gcc main.c -L/a -lhoge
まあ色々突っ込みどころはあるが,大体こんな感じで行けたはずだ.
C言語と似通ったD言語のコンパイラ,dmdのことだ,似たような方法に違いない.
早速 man dmd を見てみる.
英語だ.日本語版を探す.見つける.
http://www.kmonos.net/alang/d/dmd-linux.html
えっと,ライブラリファイルをそのままD言語ソースファイルと同じように指定する…
あれ,出来ないな.アンリファレンスだな…
もう一度DMDのマニュアルを見ると,どうやら,dmdはリンカとしてgccを利用しているらしい…
そして,-Lはあるけど,-lはない…どういうことだ…
色々サンプルを見てみると,
dmd -L-lhoge
みたいなオプションを指定すると,リンカ役のgccに-lhogeをそのまま渡すらしい.
つまり,main.dをコンパイルしたいときに,libhoge.aをリンクしたいなら.
% pwd
/a
% dmd main.d libhoge.a -L-L/a -L-lhoge
ライブラリファイル自体を渡さなければいけない理由とかよくわかんない.でもコンパイルできたから良いや.もう寝る.