Tôi có một dự án python dựa trên một số tệp lua, một trong số đó yêu cầu 'socket'. Tôi nhận được một lỗi tải socket.core "biểu tượng không xác định: lua_getmetatable" khi tôi cố gắng yêu cầu rằng tập tin lua từ python 2,7.Lỗi liên kết Lunatic Python lua.require ('socket') -> undefined symbol: lua_getmetatable
người mô phỏng đơn giản:
$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import lua
>>> lua.require('socket')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Exception: error: error loading module 'socket.core' from file
'/usr/lib/lua/5.1/socket/core.so':
/usr/lib/lua/5.1/socket/core.so: undefined symbol: lua_getmetatable
Tôi đang sử dụng một recent Lunatic Python branch nơi tôi dọn dẹp những lời cảnh báo Py_ssize_t, và liblua5.1-socket2 trên Ubuntu 11.04
tôi nhận được lỗi tương tự nếu tôi sử dụng chính mã nguồn lunatic-python và/hoặc nâng cấp lên luasocket 2.0.2.
chỉnh sửa: Điều gì gây ra lỗi này và cách khắc phục sự cố?
chỉnh sửa # 2: Đây là đầu ra của tòa nhà luasocket-2.0.2. Các làm mặc định không xây dựng unix.so, và tôi sửa nó để xây dựng mà cũng vì vậy tôi không trộn và kết hợp 2.0.0 với 2.0.2:
$ make
cd src; make all
make[1]: Entering directory `/sandbox/luasocket/luasocket-2.0.2/src'
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o luasocket.o luasocket.c
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o timeout.o timeout.c
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o buffer.o buffer.c
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o io.o io.c
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o auxiliar.o auxiliar.c
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o options.o options.c
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o inet.o inet.c
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o tcp.o tcp.c
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o udp.o udp.c
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o except.o except.c
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o select.o select.c
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o usocket.o usocket.c
gcc -O -shared -fpic -o socket.so.2.0.2 luasocket.o timeout.o buffer.o io.o auxiliar.o options.o inet.o tcp.o udp.o except.o select.o usocket.o
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o mime.o mime.c
gcc -O -shared -fpic -o mime.so.1.0.2 mime.o
gcc -I/usr/include/lua5.1 -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -llua -c -o unix.o unix.c
gcc -O -shared -fpic -o unix.so buffer.o auxiliar.o options.o timeout.o io.o usocket.o unix.o
make[1]: Leaving directory `/sandbox/luasocket/luasocket-2.0.2/src'
Câu hỏi là gì? ;) – 0xC0000022L
Điều gì gây ra lỗi này và cách khắc phục? – RedCup
Các ký hiệu không được xuất khẩu chính xác từ mô-đun 'lua' có thể được sử dụng trong mô-đun mà nó yêu cầu. Bạn cũng có thể đăng nhật ký của giai đoạn biên dịch, chủ yếu là phần liên kết cuối cùng không? –