Synapticからすべてのlua5.1開発パッケージをインストールしましたが、g ++リンカーは-llua
を見つけることができません。 -llua
が他の名前を持っている可能性があり、それを修正する必要があるという他の質問を読みました。しかし問題は、lua.o
またはそれが呼び出されるものを見つけることができないように見えることです。
gcc … -llua
は、動的にリンクしている場合(デフォルト)liblua.so
と呼ばれるファイルを探し、静的にリンクしている場合liblua.a
を探します。
apt-fileを使用すると、特定の名前のファイルを含むパッケージを検索できます。 。この検索は、オンラインで packages.ubuntu.com で行うこともできます(「パッケージのコンテンツを検索する」。ディストリビューションとアーキテクチャを選択してください)。しかし…
$ apt-file search liblua.so
$
起こっていることは、UbuntuがLuaライブラリの複数のバージョンを出荷しており、それらはバイナリ互換ではない、つまり、ビルド時に必要なものを選択する必要があるということです。
$ apt-file --regexp search '/liblua.*\.so$'
<lots of hits>
Nattyの時点では、Luaの推奨バージョンは 5.1 ですが、 5. および 4. も利用可能です。リンクするための対応するluaライブラリは、liblua5.1.so
、liblua50.so
、およびliblua40.so
です(パッケージ内のファイルはdpkg -L liblua5.1-0-dev
またはapt-file list liblua5.1-0-dev
でリストできます)。したがって、リンクコマンドを-llua5.1
(または古いシステムと互換性のあるバイナリが必要な場合は-llua50
または-llua40
)に変更する必要があります。