0x00环境和吐槽
环境:
lua安装版本:lua 5.2
lua安装系统:ubuntu 16.04
吐槽:
网上找到代码开始进行测试C/C++ linux环境下调用lua脚本,各种错。网上给出的也是粘贴复制,没有对自己的问题进行剖析。神烦!!!!
0x01开始进行排错
1.1 lua API版本不兼容
reacher@ubuntu:~/luafunc$ g++ -o add main.cpp -I /usr/include/lua5.2/
main.cpp: In function ‘int main(int, char**)’:
main.cpp:24:18: error: ‘lua_open’ was not declared in this scope
L = lua_open();
^
错误剖析:一直以为是路径问题,造成没有引用。后来多个网友贴出来的错误,发现是5.2已经弃lua_open()。
1.2 安装缺失
readline-devel:sudo apt-get install libreadline-dev
ncurses-devel: sudo apt-get install libncurses5-dev
错误剖析:将缺失的依赖安装上
1.3 连接到库文件
reacher@ubuntu:~/luafunc$ g++ -o add main.cpp -I /usr/include/lua5.2/
/tmp/ccYbXBqi.o: In function `main':
main.cpp:(.text+0x10): undefined reference to `luaL_newstate'
main.cpp:(.text+0x20): undefined reference to `luaL_openlibs'
main.cpp:(.text+0x36): undefined reference to `luaL_loadfilex'
main.cpp:(.text+0x61): undefined reference to `lua_pcallk'
main.cpp:(.text+0x70): undefined reference to `lua_close'
collect2: error: ld returned 1 exit status
g++ -o add main.cpp -I /usr/include/lua5.2/ -llua5.2
0x02吐槽
工作用工头搭建好的环境就是爽,自己来搭建各种坑和各种迷失。所以做程序员这个行当还是要多动手和练习。
解决问题的思路:
1.先看报错提示,根据报错提示进行查找解决方案。
2.多总结,不要只停留在错误提示上。
3.结合网友在这个问题上的解决思路,看一下异同,在反看自己的错误