我正在尝试在 Pharo 中运行 Woden 物理示例,其中涉及正确编译 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
或者我可以执行哪些步骤?
如果您无法在 Pharo 中运行木制物理示例,请确保安装并正确加载所有必要的依赖项。检查 Woden 物理库是否与您的 Pharo 版本兼容。如果需要,更新或重新安装库。检查代码是否有错误并验证文档中的设置步骤。如果问题仍然存在,请在 Pharo 社区论坛或沃登物理 GitHub 存储库上寻求帮助。