Lua安裝及遇到的問題

yanke_shanghai發表於2016-02-26


一、安裝readline

wget -c  

tar -zxvf readline-6.2.tar.gz 

cd readline-6.2
./configure 
make && make installl

二、 安裝lua

進入官方站點( )下載最新的安裝包。

wget -c /ftp/lua-5.2.0.tar.gz 

tar zxvf lua-5.2.0.tar.gz 
cd lua-5.2.0

make linux

make install


遇到問題:
make[1]: Entering directory `/root/software/lua-5.2.3/src'
make all SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"
make[2]: Entering directory `/root/software/lua-5.2.3/src'
gcc -o lua  lua.o liblua.a -lm -Wl,-E -ldl -lreadline 
/usr/local/lib/libreadline.so: undefined reference to `PC'
/usr/local/lib/libreadline.so: undefined reference to `tgetflag'
/usr/local/lib/libreadline.so: undefined reference to `tgetent'
/usr/local/lib/libreadline.so: undefined reference to `UP'
/usr/local/lib/libreadline.so: undefined reference to `tputs'
/usr/local/lib/libreadline.so: undefined reference to `tgoto'
/usr/local/lib/libreadline.so: undefined reference to `tgetnum'
/usr/local/lib/libreadline.so: undefined reference to `BC'
/usr/local/lib/libreadline.so: undefined reference to `tgetstr'
collect2: ld returned 1 exit status
make[2]: *** [lua] Error 1
make[2]: Leaving directory `/root/software/lua-5.2.3/src'
make[1]: *** [linux] Error 2
make[1]: Leaving directory `/root/software/lua-5.2.3/src'
make: *** [linux] Error 2

這是因為lua編譯依賴readline庫,readline庫依賴ncurses庫,但沒有指定,就會出現“未定義的符合引用”錯誤。

解決方案是修改${LUA_DIR}/src/Makefile中linux編譯target=linux,在SYSLIBS變數中追加‘-lncurses’選項即可。如下:

105 linux:
106        $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses"


重新執行如果還不行,檢視是否安裝了ncurses庫:/usr/lib目錄下

沒有的話,進行安裝:apt-get install libncurses5-dev


再次執行,沒有錯誤



補充:繼續遇到問題


檢視一下lua依賴的庫

在usr/local/lib下檢視下是否存在

存在的,那怎麼就沒生效呢?解決方法如下:

把libgsmd.so.0 所在lib位置加入到/etc/ld.so.conf檔案當中
只要在/etc/ld.so.conf中加入/usr/local/lib這一行,就可以解決此問題,不僅僅是對於libreadline.so.5,大部分的so都存在

這/usr/local/lib這個目錄裡面。
最後將/etc/ld.so.conf儲存後,還要執行ldconfig 才會使更改生效



有任何問題或技術上的交流探討,歡迎加我微信:yk2953


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30316686/viewspace-1995163/,如需轉載,請註明出處,否則將追究法律責任。

相關文章