简介
NVIDIA PhysX SDK是可扩展的多平台物理 解决方案 ,支持从智能手机到高端多核CPU和GPU的各种设备。 PhysX已经集成到一些最受欢迎的游戏引擎中,包括虚幻引擎和Unity3D。
配置安装流程
1.配置编译环境
1)安装wget包
yum install wget -y
2)安装Python 2.7.6或以上版本
请参考https://www.huaweicloud.com/kunpeng/software/python.html安装Python2或者https://www.huaweicloud.com/kunpeng/software/python3.htmlan安装Python3。
3)安装CMake 3.12或以上版本
yum install cmake3 -y
ln -s /usr/bin/cmake3 /usr/bin/cmake
----结束
2.获取源码
获取“PhysX-3.4.2-bsd”源码包。
cd /usr/local/src
wget https://github.com/NVIDIAGameWorks/PhysX/archive/3.4.2-bsd.tar.gz -O PhysX-3.4.2-bsd.tar.gz
3.编译和安装
1)解压软件包。
tar -zxvf PhysX-3.4.2-bsd.tar.gz
2)重命名并且移动
rm -rf /usr/local/physx
mv PhysX-3.4.2-bsd /usr/local/physx
3)进入PhysX编译目录。
cd /usr/local/physx/PhysX_3.4/Source/compiler/linux64
4)编译PhysX
make -j4
编译过程中会报错,请参考故障排除解决报错问题
5)将生成的动态库的路径添加到ld.so.conf配置。
a)修改“/etc/ld.so.conf”文件。
vim /etc/ld.so.conf
在文件末尾添加如下内容:
/usr/local/physx/PxShared/bin/linux64/
/usr/local/physx/PhysX_3.4/Bin/linux64/
b)使配置修改生效。
ldconfig -f /etc/ld.so.conf
c)检查配置是否生效。
ldconfig -p
----结束
4. 运行和验证
1)执行如下命令,检查生成的动态库和静态库。
a)检查生成的静态库。
cd /usr/local/physx/PhysX_3.4
find -name "*.a"
当系统回显类似如下信息时,表示生成的静态库成功。
b)检查生成的动态库。
cd /usr/local/physx/PhysX_3.4
find -name "*.so"
当系统回显类似如下信息时,表示生成的动态库成功。
2)选择SnippetHelloWorld.cpp进行测试。
a)进入SnippetHelloWorld目录。
cd /usr/local/physx/PhysX_3.4/Snippets/SnippetHelloWorld/
b)编辑SnippetHelloWorld.cpp,修改代码中的snippetMain为main。
c)编写makefile文件。
vim makefile
内容如下:
BINARY = $(patsubst %.cpp,%,$(wildcard *.cpp))
DEBUG_FLAG=-g -Werror -Wall -fPIC -fno-strict-aliasing -I ../../Include/ -I ../../../PxShared/include/ -DNDEBUG \
-L ../../Bin/linux64/ \
-lPxFoundationDEBUG_x64 \
-lPhysX3CommonDEBUG_x64 \
-lPhysX3DEBUG_x64 \
-lPhysX3CookingDEBUG_x64 \
-lPhysX3PROFILE_x64 \
-lPhysX3CommonPROFILE_x64 \
-lPhysX3CharacterKinematicDEBUG_x64 \
-L ../../Lib/linux64/ \
-lLowLevel \
-lPhysX3Extensions \
-l PhysX3Vehicle \
-l SceneQuery \
-l SimulationController \
-L ../../../PxShared/bin/linux64/ \
-lPxFoundationDEBUG_x64 \
-lPxPvdSDKDEBUG_x64 \
-lPxFoundationPROFILE_x64 \
-lPxPvdSDKPROFILE_x64 \
-L ../../../PxShared/lib/linux64/ \
-lPsFastXmlDEBUG \
-lPxTaskDEBUG \
-lpthread -ldl -rdynamic
RELEASE_FLAG = -Werror -Wall -fPIC -fno-strict-aliasing -I ../../Include/ -I ../../../PxShared/include/ -DNDEBUG \
-L ../../Bin/linux64/ \
-lPxFoundation_x64 \
-lPhysX3Common_x64 \
-lPhysX3_x64 \
-lPhysX3Cooking_x64 \
-lPhysX3PROFILE_x64 \
-lPhysX3CommonPROFILE_x64 \
-lPhysX3CharacterKinematic_x64 \
-L ../../Lib/linux64/ \
-lLowLevel \
-lPhysX3Extensions \
-l PhysX3Vehicle \
-l SceneQuery \
-l SimulationController \
-L ../../../PxShared/bin/linux64/ \
-lPxFoundation_x64 \
-lPxPvdSDK_x64 \
-lPxFoundationPROFILE_x64 \
-lPxPvdSDKPROFILE_x64 \
-L ../../../PxShared/lib/linux64/ \
-lPsFastXml \
-lPxTask \
-lpthread -ldl -rdynamic
#all:$BINARY)
all:SnippetHelloWorld.cpp
g++ SnippetHelloWorld.cpp $(DEBUG_FLAG)
注意:“g++ SnippetHelloWorld.cpp $(DEBUG_FLAG)”前面是Tab键
d)编译SnippetHelloWorld.cpp生成a.out。
make all
e)执行SnippetHelloWorld。
./a.out
当系统回显类似如下信息时,表示安装PhysX成功,可以正常使用。
[root@ecs SnippetHelloWorld]# ./a.out
SnippetHelloWorld done.
----结束
5. 故障排除
问题一:编译报“unrecognized command line option "-m64"”等错误
问题描述:
进入PhysX-3.4-master/PhysX_3.4/Source/compiler/linux64目录,执行make时,提示信息如下:
问题原因:下载子模块速度太慢导致终端。
-m64,-msse2,-mfpmath=sse是x86 64位应用编译选项,为AMD的x86 64架构生成代码。在ARM64平台无法支持。
解决方法:
执行如下命令将PhysX-3.4-master/PhysX_3.4/Source/compiler/linux64目录下所有文件中涉及的标识-m64,-msse2,-mfpmath=sse替换掉
(1)将当期目录下所有文件中内容“-m64”替换为“ ”
sed -i 's/-m64/ /g’`grep '\-m64' -rl ./`
(2)将当期目录下所有文件中内容“-mfpmath=sse”替换为“ ”
sed -i 's/-msse2/ /g’`grep '\-msse2' -rl ./`
(3)将当期目录下所有文件中内容“-mfpmath=sse”替换为“ ”
sed -i 's/-mfpmath=sse/ /g’`grep '\-mfpmath=sse' -rl ./`
(4)重新编译
make
问题二:编译报“error argument 1 null where non null expected werror nonnull”等错误
问题描述:
进入PhysX-3.4-master/PhysX_3.4/Source/compiler/linux64目录,执行make时,报“werror nonnull”错误,截图如下:
问题原因:gcc的编译选项-Wall 打开gcc的所有警告-Werror,它要求gcc将所有的警告当成错误进行处理,所以报错了。
解决方法:
不要将警告当错误处理,执行如下命令, 将当期目录下所有文件中内容“-Werror”替换为“ ”。
sed -i 's/-Werror/ /g’`grep '\-Werror' -rl ./`