在64位Linux下编译dtAgeiaPhysX
dtAgeiaPhysX是Delta3D 的一个插件,封装了 nVidia 的 PhysX.为了使用它,当然也就要编译Delta3D.不幸的是,编译 Delta3D 已经是一个不小的工作, 总的说, 苦恼的是,CMake 脚本通常通过 CMAKE_SIZEOF_VOID_P 是否为 8 来判定是否为 64 位系统,这样一来,32位库也会被安装到 lib64 目录里去.我想,要么改 CMakeLists.txt ,直接设置目标目录为 lib,要不,就只好不用 make install 了,自己手动安装.郁闷.没有办法告诉 cmake 说我要编译 32 位版本吗?--改了 CMakeLists.txt,直接把 LIB_POSTFIX 设为空完事. Delta3D : 一个开源3D仿真/游戏引擎软件,集成了很多相关组件,如 ODE 、 OpenDIS 、 OpenAL 等等,几乎具备了直接制作 3D 仿真系统或游戏的能力.3D方面主要基于 OSG . 修改 CMakeLists.txt 文件,找到合适的位置,在 CMAKE_CXX_FLAGS 中加入 -m32 参数,强制编译成 32 位版本.如果实在不想找,就在最末尾直接加上: SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32". 下面几个问题应该是 GCC 版本引起的,看来是新版本的 GCC 中 cstdio 不再作为默认包含的头文件了. 中 snprintf 未定义,修改此文件,加入 #include <cstdio> 就好. 中 va_list 未定义,同上,修改此文件,加入 #include <cstdio> 就好.
中 fpos_t 未定义,处理同上. 不知为什么死活要找 /usr/local/lib64/libgne.a,强行改 CMakeModules/FindGNE.cmake 文件,直接赋值.现在怀疑是 cache 的问题. OSG : 全称 Open Scene Graph ,基本上是 OpenGL 的 C 封装,不过提供了相当多的高级功能,基本上是一个完整的 3D 引擎. dtAgeiaPhysX : 是 nVidia PhysX 物理引擎(原是 Ageia 公司开发的,此公司已被 nVidia 收购)的封装,针对 Delta3D 集成. OpenDIS : 它没有用 CMake ,麻烦一些,要加入 -m32 参数,去改 Makefile 吧,不过它的主 Makefile 里什么也没有,倒是另有 4 个 Makefile,一个 DIS.mak 是主要的,另外有两个 example 的 .mak 文件,以及一个单元测试的 .mak 文件,没办法,一个个改吧. HawkNL : GNElib : gdal : 这个家伙其实是个比较通用的库,不应该列在这里,不过它出现的情况比较特殊,还不到连接的时候,就以编译错误的形式出现,和其它库的情况不同.其实也是
|
||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |