雑記帳

ちょっとした文章とかメモ書きとか。

UbuntuでLuaをCから呼ぶ

LuaはC言語から呼べるということで試してみました。

以下のサイト
http://symfoware.blog68.fc2.com/blog-entry-342.html
を参考にUbuntu+gccによりC言語からLuaを呼び出す事をUbuntu上で試してみました。(上のサイトはCygwin上での話ですが、CygwinとLinuxのフォルダ構造は似ているので大変参考になりました。)

Lua5.0の情報が錯綜していたり、Lua5.1のC言語との連携の情報が殆どないのでLuaのインタープリタライブラリのリンクに手間取りました。

LuaとC言語の連携にはLuaのヘッダーファイルとライブラリファイルがどこにあるかを把握しないといけません。

Ubuntu/Linuxでは通常debパッケージ経由のインストール(Luaの開発用のdebをインストールします。devの付いているパッケージ。)では、
ヘッダーは
/usr/include/lua5.1
lua.h,lauxlib.h,luahpp,luaconf.h,lualib.h
がインストールされていました。

同様にライブラリーは
/usr/lib/
liblua5.1.soなどがインストールされています。

なのでこの2つをgccに教えてやれば良いということになります。

gccのインクルードディレクトリの指定は
-I(インクルードディレクトリ)
とし、
ライブラリディレクトリは
-L(ライブラリディレクトリ)
と指定します。

一般的には下のようになります。
$gcc (C言語のソースファイル) -I(Lua5.1のインクルードファイル) -L(Lua5.1のライブラリファイル) -l(ライブラリの名前指定オプション) …

具体的には、
$ gcc testLua.c -I/usr/include/lua5.1 -L/usr/lib/ -llua5.1 -o testLua

としてやればtestLuaというC言語のLuaを呼ぶバイナリが生成されます。

-llua5.1
というのは“liblua5.1”の文字列が含まれるライブラリファイル一式を指定するオプションです。

※因みにライブラリファイルの参照に失敗するとコンパイルがundefined referenceによりリンクエラーが発生し、ストップしてしまいます。

 

では。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。