在我的 ubuntu 14.xx 中,我尝试编译 lsnes 模拟器以使用来自aleju/mario-ai的 mario-ai 脚本,并且我尝试使用谷歌搜索许多解决方案来解决以下问题:
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/ all .ldflags fonts/ all .ldflags 库/所有.ldflags 接口/所有.ldflags 视频/所有.ldflags 仿真/所有.ldflags cmdhelp/所有.ldflags 平台/所有.ldflagscore/multitrack.o: In function
lua::state:: get_string (int, std::string const&)': /home/pengsuyu/software/lsnes/sourcecode/src/core/../../include/library/lua-base.hpp:317: 未定义的引用lua_tolstring' 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_toboolean' core/multitrack.o: In function
lua::state::type(int)' 的未定义引用:. /home/pengsuyu/software/lsnes/sourcecode/src/library/lua.cpp:536: 未定义引用lua_close' library/lua.o: In function
lua::state::pushcfunction(int ( )(lua_State ))': /home/pengsuyu/software/lsnes/ sourcecode/src/library/../../include/library/lua-base.hpp:504: 未定义引用lua_pushcclosure' 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_getfield' library/lua.o: In function
lua::state::insert(int)' 的引用:/home/pengsuyu/software/lsnes/ sourcecode/src/library/../../include/library/lua-base.hpp:509: 未定义的引用lua_insert' collect2: error: ld returned 1 exit status make[1]: *** [lsnes] Error 1 make[1]: Leaving directory
/home/pengsuyu/software/lsnes/sourcecode/src' make: *** [src/ all_files ] 错误 2
一开始,我认为,链接器找不到我的 lua 库。所以我尝试用 test.lua 编译我的 main.cpp。
主.cpp:
#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;
}
测试.lua:
print("Hello World");
我写了一个 MakeFile 来生成可执行文件“main”:
main:main.o
gcc -o $@ $< -llua5.1 -lstdc++
main.o:
gcc -c main.cpp
clean:
-rm *.o
当我添加编译选项“-llua5.1”和“-lstdc++”时它会起作用,否则它会抛出与我编译 lsnes 相同的错误
我不熟悉 gcc 和 Makefile。请帮我解决这个问题。
解决这个问题的方法是在名为“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”
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句