共有ライブラリ(.so)が直接gccの引数に指定できるだなんて知らんかった

昨日SPVMのexeファイルの生成に成功しました。

これで、SPVMにもPerlにも依存しない、実行ファイルが出力できるようになった。

Windowsネイティブアプリや、macOSアプリiphoneアプリなんかを、Perlの文法で開発できる道が開けた。(androidJava挟まんといかんから、単純には無理やねぇ。)

今までは、Perlをやっているときは、DynaLoaderとかXSLoaderを使って、共有ライブラリをプログラムが開始してから、動的に読み込んでたから、この方法しか思いつかんかったんだけど、共有ライブラリが引数に指定できることを、昨日知った。

C言語やっている人には、当たり前のことなのかもしれないが、Perlから入った僕は、知らんかったのです。

# 共有ライブラリを指定して、実行ファイル生成
gcc -o spvmcc_build/myexe spvmcc_build/my_runtime.so spvmcc_build/my_runtime.so blib/lib/SPVM/CORE.native/CORE.so blib/lib/SPVM/Example.native/Example.so blib/lib/SPVM/Example.precompile/Example.so spvmcc_build/lib/TestCase/Exe.precompile/Exe.so spvmcc_build/lib/TestCase/Extension.native/Extension.so
      spvmcc_build/myexe

これは、共有ライブラリの暗黙的読み込みというやつで、ひとつのexeになっているわけではなくって、exeが共有ライブラリを実行時に読み込むと思うんだけど、コンパイラで、指定しておくことができるというものみたい。