目的
Ubuntu17.10,gcc6.3.0,lua5.3.4
でC言語からluaのスクリプトを呼び出す環境を作りたいと考えています。
しかし、コンパイル時点でエラーが出てしまいます。
何が間違っているのかご指摘下さい。
よろしくお願いします。
試したこと
①下記URLに従ってluaのソースコードをダウンロード、コンパイル
(インストール場所は~ディレクトリ)
http://www.lua.org/download.html
curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gz tar zxf lua-5.3.4.tar.gz cd lua-5.3.4 make linux test
②ライブラリや*.hファイルが含まれる~lua-5.3.4/srcディレクトリにテストプログラム(test.cとhello.lua)を作成
2つのファイルは以下のサイトを使用しました。
http://www.hakkaku.net/articles/20081126-288
// file:test.c #include <stdio.h> #include "lua.h" #include "lualib.h" #include "lauxlib.h" int main(int argc, char* argv) { // Lua の言語エンジンを初期化 lua_State *lua = luaL_newstate(); // Luaのライブラリを使えるようにする luaL_openlibs(lua); // Luaのスクリプトを読み込む luaL_dofile(lua, "hello.lua"); return 0; }
-- hello.lua print("Hello, World!")
③liblua.aとリンクしてコンパイル
gcc -o test.out test.c -L. -llua
問題
③のコンパイルでエラーが出ました。
./liblua.a(lobject.o): 関数 `numarith.isra.0' 内: lobject.c:(.text+0x1d3): `fmod' に対する定義されていない参照です lobject.c:(.text+0x201): `pow' に対する定義されていない参照です lobject.c:(.text+0x215): `floor' に対する定義されていない参照です ./liblua.a(lvm.o): 関数 `luaV_tointeger' 内: lvm.c:(.text+0x2b7): `floor' に対する定義されていない参照です ./liblua.a(lvm.o): 関数 `luaV_execute' 内: lvm.c:(.text+0x1f0d): `floor' に対する定義されていない参照です lvm.c:(.text+0x2027): `fmod' に対する定義されていない参照です lvm.c:(.text+0x2684): `pow' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_log10' 内: lmathlib.c:(.text+0x9f): `log10' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_pow' 内: lmathlib.c:(.text+0x1b4): `pow' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_tanh' 内: lmathlib.c:(.text+0x1df): `tanh' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_sinh' 内: lmathlib.c:(.text+0x20f): `sinh' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_cosh' 内: lmathlib.c:(.text+0x23f): `cosh' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_tan' 内: lmathlib.c:(.text+0x26f): `tan' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_sqrt' 内: lmathlib.c:(.text+0x2ce): `sqrt' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_sin' 内: lmathlib.c:(.text+0x2ef): `sin' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_log' 内: lmathlib.c:(.text+0x631): `log' に対する定義されていない参照です lmathlib.c:(.text+0x645): `log' に対する定義されていない参照です lmathlib.c:(.text+0x676): `log10' に対する定義されていない参照です lmathlib.c:(.text+0x686): `log' に対する定義されていない参照です lmathlib.c:(.text+0x696): `log2' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_exp' 内: lmathlib.c:(.text+0x6ef): `exp' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_cos' 内: lmathlib.c:(.text+0x71f): `cos' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_atan' 内: lmathlib.c:(.text+0x77c): `atan2' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_asin' 内: lmathlib.c:(.text+0x7af): `asin' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_acos' 内: lmathlib.c:(.text+0x7df): `acos' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_ceil' 内: lmathlib.c:(.text+0x890): `ceil' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_modf' 内: lmathlib.c:(.text+0x8f3): `floor' に対する定義されていない参照です lmathlib.c:(.text+0x971): `ceil' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_floor' 内: lmathlib.c:(.text+0x9a0): `floor' に対する定義されていない参照です ./liblua.a(lmathlib.o): 関数 `math_fmod' 内: lmathlib.c:(.text+0xb0f): `fmod' に対する定義されていない参照です ./liblua.a(loadlib.o): 関数 `lookforfunc' 内: loadlib.c:(.text+0x534): `dlsym' に対する定義されていない参照です loadlib.c:(.text+0x581): `dlerror' に対する定義されていない参照です loadlib.c:(.text+0x5b6): `dlopen' に対する定義されていない参照です loadlib.c:(.text+0x62f): `dlerror' に対する定義されていない参照です ./liblua.a(loadlib.o): 関数 `gctm' 内: loadlib.c:(.text+0x7df): `dlclose' に対する定義されていない参照です collect2: error: ld returned 1 exit status
###補足
過程①のluaのmakeにあたって、必要だったReadlineライブラリは以下のパッケージから取得しました。
gcc apt-get install liblua5.3-dev
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/08 18:46
2018/03/08 18:56 編集
2018/03/08 19:00 編集
2018/03/09 09:17