web-dev-qa-db-ja.com

g ++に-lluaを提供するパッケージは何ですか?

Synapticからすべてのlua5.1開発パッケージをインストールしましたが、g ++リンカーは-lluaを見つけることができません。 -lluaが他の名前を持っている可能性があり、それを修正する必要があるという他の質問を読みました。しかし問題は、lua.oまたはそれが呼び出されるものを見つけることができないように見えることです。

6
Aleksandar

gcc … -lluaは、動的にリンクしている場合(デフォルト)liblua.soと呼ばれるファイルを探し、静的にリンクしている場合liblua.aを探します。

apt-fileを使用すると、特定の名前のファイルを含むパッケージを検索できます。Install 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.soliblua50.so、およびliblua40.soです(パッケージ内のファイルはdpkg -L liblua5.1-0-devまたはapt-file list liblua5.1-0-devでリストできます)。したがって、リンクコマンドを-llua5.1(または古いシステムと互換性のあるバイナリが必要な場合は-llua50または-llua40)に変更する必要があります。

5
Gilles