链接错误与" undefined lua_xxxxx"建立lsnes时

时间:2017-03-29 06:11:23

标签: linux hyperlink lua

在我的ubuntu 14.xx中,我尝试编译lsnes模拟器以使用aleju/mario-ai中的mario-ai脚本,并且我已尝试使用google许多解决方案来解决以下问题:

以下是控制台的输出:

  

make [3]:__all__.files' is up to date. make[3]: Leaving directory / home / pengsuyu / software / lsnes / sourcecode / src / platform / macosx'   make [2]:离开目录/home/pengsuyu/software/lsnes/sourcecode/src/platform' g++ -o lsnes cat all_common .files all_platform .files -pthread -lboost_iostreams -lboost_filesystem -lboost_system -lz -lgcrypt -lgpg-error -L/usr/lib/x86_64-linux-gnu -lcurl -rdynamic -ldl cat core / all 。 ldflags lua / 全部 .ldflags字体/ 全部 .ldflags库/ 全部 .ldflags接口/ 全部 .ldflags视频/all.ldflags emulation / all .ldflags cmdhelp / all .ldflags platform / all .ldflags {{1 lua :: state :: get_string(int,std :: string const&)':   /home/pengsuyu/software/lsnes/sourcecode/src/core/../../include/library/lua-base.hpp:317:对 core/multitrack.o: In function的未定义引用lua :: state :: get_bool(int ,std :: string const&)':   /home/pengsuyu/software/lsnes/sourcecode/src/core/../../include/library/lua-base.hpp:334:未定义引用lua_tolstring' core/multitrack.o: In function lua :: state :: type(int )&#39 ;:   。   。   /home/pengsuyu/software/lsnes/sourcecode/src/library/lua.cpp:536:对lua_toboolean' core/multitrack.o: In function的未定义引用lua :: state :: pushcfunction(int()(lua_State ) )&#39 ;:   /home/pengsuyu/software/lsnes/sourcecode/src/library/../../include/library/lua-base.hpp:504:对lua_close' library/lua.o: In function的未定义引用lua :: state :: getfield(int ,char const *)':   /home/pengsuyu/software/lsnes/sourcecode/src/library/../../include/library/lua-base.hpp:506:对lua_pushcclosure' library/lua.o: In function的未定义引用lua :: state :: insert(int )&#39 ;:   /home/pengsuyu/software/lsnes/sourcecode/src/library/../../include/library/lua-base.hpp:509:对lua_getfield' library/lua.o: In function / home / pengsuyu / software / lsnes /的未定义引用源码/ SRC'   make:*** [src / all_files ]错误2

==================================

一开始,我认为,链接器找不到我的lua库。所以我试着用test.lua编译我的main.cpp。

main.cpp中:

lua_insert'
  collect2: error: ld returned 1 exit status
  make[1]: *** [lsnes] Error 1
  make[1]: Leaving directory

test.lua:

#include <stdio.h>
#include <iostream>

//extern "C"
//{
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
//} // liblua5.1-c++.a 
lua_State * L;
int main ()
{
     L = lua_open();
     luaL_openlibs(L);
     luaL_dofile(L, "d:\\test.lua");
     return 0;
}

我编写一个MakeFile来生成可执行文件&#34; main&#34;:

print("Hello World");

当我添加编译选项&#34; -llua5.1&#34;和&#34; -lstdc ++&#34;否则它会抛出与编译lsnes

相同的错误

我不熟悉gcc和Makefile。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我已经解决了我的问题

解决此问题的方法只是更改名为“options.build”的文件中的一行。

1. find the line "LUA=lua" in options.build

2. change this line to "LUA=lua5.1"

因为所需的库是5.1,所以如果你想成功构建它,你必须使用“lua5.1”库,但是默认配置是“lua”而不是“lua5.1”