我正在尝试在Pharo中运行Woden Physics示例,其中包括正确编译Bullet并在Pharo中正确安装了smalltalk绑定。
我正在使用Linux Mint 17 x64。
但NativeBoost似乎无法加载已编译的库。我一直在使用这里提供的资源:
https://github.com/ronsaldo/bullet-pharo
https://github.com/ronsaldo/swig
我使用提供的构建脚本构建了swig的修改版本以及子弹库和绑定。 我还有一个双重检查,子弹库是32位。 打开Woden物理示例会返回以下错误:
failed to get a symbol address:
PharoNB_new_BTDefaultCollisionConfiguration__SWIG_1
在调试器中检查调用堆栈时,结果是模块句柄为0。
我通过执行与
相同的消息来验证这一点BulletCInterface nbLibraryNameOrHandle
执行:
NativeBoost forCurrentPlatform loadModule: 'BulletPharo'
此消息返回0.我尝试在工作区中指定libPharoBullet.so的完整路径,如:
NativeBoost forCurrentPlatform loadModule:
'/home/martin/.local/share/Pharo/bullet-pharo/libBulletPharo.so'
具有相同的结果。我还用我的32位系统库(liblzma)验证了它,然后NativeBoost能够加载它,因为它返回了一个非零的句柄。
所以我怀疑编译过程中出现了什么问题...... 我也做了
readelf -h libPharoBullet.so
它的ABI是“UNIX - GNU”,而pharo-vm的ABI是“UNIX - System V”
这可能是问题吗? 在编译时如何强制ABI成为System V?我使用gcc 4.8.2
或者我可以执行哪些步骤?