分页: 1 / 1

[求助]lua-gd编译失败

发表于 : 2011-01-28 21:01
Rothsdad
linux:arch
gcc 4.5.2
lua 5.1.4
lua-gd-2.0.33r2

编译时的日志:

代码: 全选

gcc -o gd.so `gdlib-config --features |sed -e "s/GD_/-DGD_/g"` `gdlib-config --cflags` `pkg-config lua --cflags` -O3 -Wall -shared `gdlib-config --ldflags` `gdlib-config --libs` `pkg-config lua --libs` -lgd luagd.c
lua test_features.lua
lua: error loading module 'gd' from file './gd.so':
    ./gd.so: undefined symbol: gdImageGifAnimEndPtr
stack traceback:
    [C]: ?
    [C]: in function 'require'
    test_features.lua:5: in main chunk
    [C]: ?
make: *** [gd.so] 错误 1
不是版本问题,但能编译出gd.so, 就是不能运行相关的lua脚本。

希望lua高手指点一二!

Re: [求助]lua-gd编译失败

发表于 : 2012-04-21 11:45
xenyinzen
我也遇到了。原来是编译参数的问题。以下是我修改后的makefile文件。



# luagd -- gd bindings for the Lua Programming Language.
# (c) 2004-06 Alexandre Erwin Ittner <aittner@netuno.com.br>
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHOR OR COPYRIGHT HOLDER BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# If you use this package in a product, an acknowledgment in the product
# documentation would be greatly appreciated (but it is not required).
#

CC=gcc

# ---------------------------------------------------------------------------
# Automatic configuration using pkgconfig, gd-config and sed. These
# lines should work on most Linux/Unix systems. If your system does not
# have these programs you must comment out these lines and uncomment and
# change the next ones.

# Name of .pc file. "lua5.1" on Debian/Ubuntu
LUAPKG=lua5.1
OUTFILE=gd.so
CFLAGS=`gdlib-config --cflags` `pkg-config $(LUAPKG) --cflags` -O2 -Wall -fPIC
GDFEATURES=`gdlib-config --features |sed -e "s/GD_/-DGD_/g"`
#LFLAGS=-shared `gdlib-config --ldflags` `gdlib-config --libs` \
# `pkg-config $(LUAPKG) --libs` -lgd
LFLAGS=-shared -lgd -llua5.1

INSTALL_PATH=`pkg-config $(LUAPKG) --variable=INSTALL_CMOD`


# ---------------------------------------------------------------------------
# Manual configuration for systems without pkgconfig.

#OUTFILE=gd.so
#CFLAGS=-Wall `gdlib-config --cflags` -I/usr/include/lua5.1 -O3
#GDFEATURES=`gdlib-config --features |sed -e "s/GD_/-DGD_/g"`
#LFLAGS=-shared `gdlib-config --ldflags` `gdlib-config --libs` -llua51 -lgd
#INSTALL_PATH=/usr/lib/lua/


# ---------------------------------------------------------------------------
# Manual configuration for Windows and systems without sed, pkgconfig, etc.
# Uncomment, change and good luck :)

#OUTFILE=gd.dll
#CFLAGS=-Wall -IC:/lua5.1/ -O3
#GDFEATURES=-DGD_XPM -DGD_JPEG -DGD_FONTCONFIG -DGD_FREETYPE -DGD_PNG -DGD_GIF
#LFLAGS=-shared -lgd2 -lm -llua51
#INSTALL_PATH="C:/Program Files/lua/"
# ---------------------------------------------------------------------------


all: $(OUTFILE)

$(OUTFILE): luagd.c
# $(CC) -o $(OUTFILE) $(GDFEATURES) $(CFLAGS) $(LFLAGS) luagd.c
$(CC) $(GDFEATURES) $(CFLAGS) -c luagd.c -o gd.o
$(CC) -o $(OUTFILE) gd.o $(LFLAGS)
lua test_features.lua

install: $(OUTFILE)
install -s $(OUTFILE) $(INSTALL_PATH)

clean:
rm -f $(OUTFILE) *.o