環境
はじめは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