關於lua curl的資料網上並不是很多。找來找去就那么幾個,所以我絕得很有必要把我的經驗記下來,以防下次忘記
---好記性不如爛筆頭。
如果在網上(當然是Google)搜索掛關鍵字“lua curl”或“luacurl”,你搜索的頭兩條數據很可能是不一樣。因為關於lua的curl庫有兩個:luacurl和Lua-cURL。
如果你打開了這個網址“http://curl.haxx.se/libcurl/lua/”,你就會看這樣一段話:
There are two different efforts:
- luacurl adopts the easy interface
- Lua-cURL is aiming for a full-fledged libcurl binding (easy/multi/share interface) to the functionality of Lua
Credits
luacurl is written by Alexander Marinov and Enrico Tassi
Lua-cURL is written by J�rgen H�tzel
一、安裝Lua-cURL
看着好像是兩條但是其實有三個版本:這里我們先說說第二個-----Lua-cURL。
這里有兩個選擇:
這里我選的git上的源碼,因為我發現git上的更新一點。git上的最新版本是0.2.3,luaforge上最新的是0.2。具體步驟如下:
==================安裝cURL==================
# tar zxf 0.2.3
# cd lua-curl-0.2.3
# cmake directory //(directory為CMakeList.txt所在目錄)
# export LUA_INCLUDE_DIR=/usr/include/lua5.1
# make CC=gcc
# make install CC=gcc
安裝以后會在當前目錄下生成cURL.so的動態鏈接庫,將它復制到相應的目錄,下面是我的目錄:
# cp cURL.so /usr/local/lib/lua/5.1/
這樣在lua中直接使用require("cURL");就可以。
二、安裝luacurl——lua-curl-0.3.0
為什么說看着是兩個版本,其實是三個呢,因為luacurl有兩個版本:
先說lua-curl_0.3.0,具體步驟如下:
# tar zxf lua-curl_0.3.0.orig.tar.gz
# cd lua-curl-0.3.0
# make
# make install
這里其實我在執行make命令的時候遇到了不少問題。最重要的一個問題就是沒有lua5.1.pc,錯誤提示如下:
Package lua5.1 was not found in the pkg-config search path.
Perhaps you should add the directory containing `lua5.1.pc'
to the PKG_CONFIG_PATH environment variable
No package 'lua5.1' found
提示的意思是缺少lua5.1.pc這個文件,至於什么是*.pc文件,
請參考這里解決這個問題最主要就是先查看系統中是否已有lua.pc這個文件,一般在/usr/lib/pkgconfig或/usr/lib64/pkgconfig,如果發現沒有這個的話,在centos下可以使用如下命令查看那些安裝包支持lua.pc:
# yum provides \*/lua.pc
通常會列出幾個選項,同時會顯示安裝完以后,lua.pc會在哪個目錄下。這里列出的安裝包應該是lua-devel幾個不同的版本。選第一個就行,安裝完以后,相應的目錄下應該就會有lua.pc了。然后在當前目錄建立lua.pc的軟連接:
# ln -s lua.pc lua5.1.pc
這樣就不會出現這個問題了,但是第二個問題出現了:
libtool --silent --tag=CC --mode=link cc \
-rpath -o liblua5.1-curl.la \
-version-info 0:0:0 \
-lcurl lua-curl.lo luabind.lo
libtool: link: only absolute run-paths are allowed
make: *** [liblua5.1-curl.la] 錯誤 1
“libtool: link: only absolute run-paths are allowed ”這句話描述的是執行libtool的時候,-rpath后面的路徑必須是絕對路徑才行。我查看了一下原來的Makefile里是這樣寫的:

注意這里處於選中狀態的LUA_RPATH的位置,在上面的錯誤提示中,此處正好是空,所以這里需要一個絕對路徑,具體應該寫什么路徑呢,看這里:

紅色方框中的意思是要將存放*.so的目錄賦給LUA_RPATH,所以這里我寫的是
LUA_RPATH:=/usr/local/lib/lua/5.1/
將這一行放在lua50 stuff的endif的后面:

進行完以上操作,就可以順利的執行make和make install了。執行完make install后,會在剛才設置得LUA_RPATH目錄下看到一個軟連接

這樣就安裝完成了。
三、安裝luacurl——luacurl-1.2.1
其實說到luacurl-1.2.1的編譯安裝,基本上全是淚啊,各種不給力啊。
方法一:
luacurl-1.2.1解壓后只有兩個文件:luacurl.c和CMakeLists.txt。所以只能使用cmake ./來執行,但是我在執行完# cmake ./ # make #make install 以后並沒有發現有動態鏈接庫庫*.so文件生成,更不要說應該有的luacurl.so了。我這里行不通!
方法二:
第二種方法其實不應該叫做一種方法,應該是一種取巧的方式,我在加壓后的luadist安裝包的lib/lua目錄下找到了我所需要的luacurl.so文件,於是就拷貝之:
# cp lib/lua/luacurl.so /usr/local/lib/lua/5.1/
結果可以。好吧應該也能算一種方法吧。