環境
はじめはWindowsでやろうとしたけど、途中で躓いたので途中からwsl。
windows編
はじめは\(\TeX \ \mathrm{Live}\)に入ってるluaをtexluaで実行してみた。
これをやるために、途中からluaをインストール。
はじめはソースを落としたがwindowsでは使えなさそう?だったので、素直にbinaryを落としてきて、C:\Program Files\に配置してPathを通した。
途中までは問題なかった1が、Cからluaを呼ぶところでコンパイルが全くできない。
コンパイラはclang-clを使用していたが、まずclang-clがgccやclangと違うことやcコンパイルの仕方を理解するところから始まった2。
結局数時間と化してもlinkerのエラーが解消できなかったので、情報のおおいwslでやり直すことにした。
WSL編
まずaptでインストールしてみたが、ライブラリのリンクに失敗し続けた
(具体的には、Archive has no index; run ranlib to add one)。
原因に全く心当たりがなかったが、ここを見る限り、
ライブラリは手動でコンパイルする必要はなさそうなので、ソースからビルドすることにした。
ソースでmakeして、sudo make installしたらインストールできた(簡単だし、一瞬だった)。
ここにはlocateで探すみたいなことが書いてあったが、
ソースに入ってたREADME.htmlをみるとMakefileにインストール先が書いてあるということで、
それらを除いてみると必要なライブラリがあった。
これらへのパスを含めて
gcc -o calllua -Wall call_lua_from_c.c -I/usr/local/include -I/usr/local/lib -llua -lm
したら3、コンパイルに成功した。
Windows編を振り返る
調べていて分かったことは、
.soや.oや.aといった拡張子はwindowsでは別もの(.dllとか?)- clang-clはgccに対応するclangとは別で、microsoftのcl.exeに対応するもの(vs codeのデフォルトにcl.exeがあった) 当然オプションも違う
なのでWindowsではこれらを反映したコンパイルをする必要がありそう。
幸いlua53.dllがバイナリに入ってたのでそれを使えばいいはず。
追記:Windowsでコンパイル
lua binariesのwin用ライブラリを落としてきて、.libをclang-clの/linkオプションに渡したらできた。
バージョンは古いけど(5.4.2)
最終的に
clang-cl.exe /I path\to\libs /link path\to\lua54.libs
で出来た。
Comments
Reply to this post (mastodon) to leave a comment.
Reply