我试图在Android设备上运行Libtorrent,使用Python for Android(https://github.com/kivy/python-for-android)。我有来自RUTracker的Libtorrent源文件,这是一个现有的Android应用程序,成功编译了Android的libtorrent库。他们正在使用JNI与Libtorrent库进行Java通信。
我还设法使用本网站上的说明编译了他们的Libtorrent库:https://github.com/pepibumur/Torrent-Movies。我首先使用NDK工具链编译了Boost 1.49。之后我成功编译了Libtorrent,并用一个非常简单的Java应用程序测试了这个.so文件。
现在我想用Python包装器编译,这样我就可以用Python导入libtorrent库了。经过一些研究,我发现我必须创建以下文件并将其包含在编译过程中:
#include <boost/python/module.hpp>
BOOST_PYTHON_MODULE(libtorrent)
{
}
为此,我还需要libpython,所以我编译了一个我需要的Python文件的.a文件并将其链接起来。在Python中导入模块时,它会产生分段错误。下面显示了堆栈跟踪的一些最重要的行:
I/DEBUG ( 317): #01 pc 0001c75c /system/lib/libc.so (abort+4)
I/DEBUG ( 317): #02 pc 001ea5b3 /data/data/org.RUTorrent.example/files/lib/python2.7/site-packages/libtorrent.so (Py_FatalError+42)
I/DEBUG ( 317):
I/DEBUG ( 317): stack:
I/DEBUG ( 317): 75231518 00000001
I/DEBUG ( 317): 7523151c 6c12aaba /dev/ashmem/dalvik-mark-stack (deleted)
I/DEBUG ( 317): 75231520 40110170 /system/lib/libc.so
I/DEBUG ( 317): 75231524 724cf698
I/DEBUG ( 317): 75231528 0000004e
I/DEBUG ( 317): 7523152c 400e820d /system/lib/libc.so (__sflush+56)
I/DEBUG ( 317): 75231530 40110220 /system/lib/libc.so
I/DEBUG ( 317): 75231534 401134ac
I/DEBUG ( 317): 75231538 00000000
I/DEBUG ( 317): 7523153c 400e922b /system/lib/libc.so (_fwalk+34)
I/DEBUG ( 317): 75231540 400e84d5 /system/lib/libc.so (_cleanup)
I/DEBUG ( 317): 75231544 7523155c [stack:6462]
I/DEBUG ( 317): 75231548 757d89d4
I/DEBUG ( 317): 7523154c 00000002
I/DEBUG ( 317): 75231550 df0027ad
I/DEBUG ( 317): 75231554 00000000
I/DEBUG ( 317): #00 75231558 7917c8bc /data/data/org.RUTorrent.example/files/lib/python2.7/site-packages/libtorrent.so
I/DEBUG ( 317): 7523155c fffffbdf
I/DEBUG ( 317): 75231560 401101c4 /system/lib/libc.so
I/DEBUG ( 317): 75231564 00000000
I/DEBUG ( 317): 75231568 401101c4 /system/lib/libc.so
I/DEBUG ( 317): 7523156c 00000000
I/DEBUG ( 317): 75231570 40113da0
I/DEBUG ( 317): 75231574 791a8af4 /data/data/org.RUTorrent.example/files/lib/python2.7/site-packages/libtorrent.so
I/DEBUG ( 317): 75231578 740c1ad0 /data/app-lib/org.RUTorrent.example-1/libpython2.7.so
I/DEBUG ( 317): 7523157c 400e4760 /system/lib/libc.so (__pthread_clone)
I/DEBUG ( 317): #01 75231580 0000193e
I/DEBUG ( 317): 75231584 78f3b5b7 /data/data/org.RUTorrent.example/files/lib/python2.7/site-packages/libtorrent.so (Py_FatalError+46)
I/DEBUG ( 317): #02 75231588 00000000
I/DEBUG ( 317): 7523158c 7917bfb4 /data/data/org.RUTorrent.example/files/lib/python2.7/site-packages/libtorrent.so
I/DEBUG ( 317): 75231590 791a8af4 /data/data/org.RUTorrent.example/files/lib/python2.7/site-packages/libtorrent.so
I/DEBUG ( 317): 75231594 78f38b3b /data/data/org.RUTorrent.example/files/lib/python2.7/site-packages/libtorrent.so (PyThreadState_Get+26)
I/DEBUG ( 317): 75231598 791a8af4 /data/data/org.RUTorrent.example/files/lib/python2.7/site-packages/libtorrent.so
I/DEBUG ( 317): 7523159c 78f35877 /data/data/org.RUTorrent.example/files/lib/python2.7/site-packages/libtorrent.so (Py_InitModule4+30)
I/DEBUG ( 317): 752315a0 000024f0
I/DEBUG ( 317): 752315a4 00000000
I/DEBUG ( 317): 752315a8 5391ba4e /dev/ashmem/dalvik-heap (deleted)
I/DEBUG ( 317): 752315ac 03d43237
I/DEBUG ( 317): 752315b0 00000000
I/DEBUG ( 317): 752315b4 00000000
I/DEBUG ( 317): 752315b8 791a9014 /data/data/org.RUTorrent.example/files/lib/python2.7/site-packages/libtorrent.so
I/DEBUG ( 317): 752315bc 7909eeb7 /data/data/org.RUTorrent.example/files/lib/python2.7/site-packages/libtorrent.so
我不确定这出错的地方。这是Boost.Python内部的错误吗?或者它是Python库中的错误?有什么我可以尝试调试此错误?它是在启动应用程序时发生的,因为导入libtorrent是第一行。