编译

源码链接:

https://github.com/NVIDIAGameWorks/PhysX-3.4

使用随附的 Makefile 构建源代码:

Makefiles 在 /PhysX_3.4/Source/compiler
进入/PhysX-3.4/PhysX_3.4/Source/compiler/选择对应的系统环境
这里使用的是:linux64
清洁解决方案:make clean
构建所有配置:make
构建具体配置:make (debug|checked|profile|release)
(踩坑:此处gcc、g++版本需为7.X)

使用随附的 Makefile 构建例子:

Makefiles 在 Snippets/compiler/
清洁解决方案:make clean
构建所有配置和代码片段:make
使用 -j[x] 的并行构建可能会失败。
构建所有片段的特定配置:make (debug|checked|profile|release)
生成的可执行文件可以在 Bin/

构建和运行代码段所需的软件包:

PhysX SDK: build as described above.
libxxf86vm-dev
libgl1-mesa-dev
libglu1-mesa-dev
libglut
gcc-multilib
g+±multilib
ia32-libs
freeglut3-dev
CUDA 8.0 compatible display drivers to run with GPU PhysX acceleration.

Linux环境搭建

进入/PhysX_3.4/Source/compiler/linux64
构建 .a 和 .so文件 : make
等待生成完成:
.so路径:
PhysX-3.4/PhysX_3.4/Bin/linux64
PhysX3.4/PhysX-3.4/PxShared/bin/linux64
.a路径:
PhysX-3.4/PhysX_3.4/Lib/linux64
PhysX3.4/PhysX-3.4/PxShared/lib/linux64
在cmake中链接上:

target_link_libraries(${PROJECT_NAME}LowLevelLowLevelAABBLowLevelClothLowLevelDynamicsLowLevelParticlesPhysX3ExtensionsPhysX3VehicleSceneQuerySimulationControllerPsFastXmlPxTask
)
target_link_libraries(${PROJECT_NAME} libPhysX3CharacterKinematic_x64.so  libPhysX3GpuDEBUG_x64.solibPhysX3Common_x64.so             libPhysX3GpuPROFILE_x64.solibPhysX3Cooking_x64.so             libPhysX3Gpu_x64.solibPhysX3GpuCHECKED_x64.so          libPhysX3_x64.solibPxFoundation_x64.so libPxPvdSDK_x64.so)// 这里可能会需要pthread,需要的话添加如下target_link_libraries(${PROJECT_NAME}pthreaddl)

例子

借用一下大佬的示例代码:(仓库配置为mac环境)
github地址:https://github.com/THISISAGOODNAME/physxOpenGL

/*
=====================================================================Book              : Learning Physics Modeling with PhysX (ISBN: 978-1-84969-814-6)
Author              : Krishna Kumar
Compiler used       : Visual C++ 2010 Express
PhysX SDK version   : 3.3.0
Source code name    : ch2_1_HelloPhysx
Reference Chapter   : Chapter-2: Basic ConceptsDescription          : This example demonstrates the initialization, stepping and shutdown of PhysX SDK version 3.3.0It is more like 'Hello World' program for PhysX SDK and contains minimal code. It mainly containsthree function which are as follows;void InitPhysX();        //Initialize the PhysX SDK and create two actors. void StepPhysX();     //Step PhysX simulation 300 times.void ShutdownPhysX(); // Shutdown PhysX SDKConnectPVD();          //Function for the visualization of PhysX simulation (Optional) This example code itself doesn't provide any implementation for rendering the PhysX objects.However you can use PVD software to visualize the simulation. PVD can only be used in 'Debug' mode(configuration).Please refer to last chapter (PhysX Visual Debugger) for more information.=====================================================================
*//*
=====================================================================Author                : Yanjun Yang
Compiler used       : Apple LLVM version 8.1.0 (clang-802.0.42)clang llvm
PhysX SDK version   : 3.4.0
Reference Chapter   : Chapter-2: Basic Concepts=====================================================================
*/#define _DEBUG 1#include <iostream>
#include <PxPhysicsAPI.h> //Single header file to include all features of PhysX APIusing namespace std;
using namespace physx; //--------------Global variables--------------//
static PxPhysics*               gPhysicsSDK = NULL;            //Instance of PhysX SDK
static PxFoundation*            gFoundation = NULL;            //Instance of singleton foundation SDK class
static PxDefaultErrorCallback   gDefaultErrorCallback;      //Instance of default implementation of the error callback
static PxDefaultAllocator       gDefaultAllocatorCallback;  //Instance of default implementation of the allocator interface required by the SDKPxScene*                     gScene = NULL;             //Instance of PhysX Scene
PxReal                          gTimeStep = 1.0f/60.0f;        //Time-step value for PhysX simulation
PxRigidDynamic                  *gBox = NULL;              //Instance of box actor //-----------PhysX function prototypes------------//
void InitPhysX();       //Initialize the PhysX SDK and create two actors.
void StepPhysX();       //Step PhysX simulation 300 times.
void ShutdownPhysX();   //Shutdown PhysX SDKint main()
{InitPhysX();  //Initialize PhysX then create scene and actors//ConnectPVD(); //Uncomment this function to visualize  the simulation in PVD//Simulate PhysX 300 timesfor(int i=0; i<=300; i++) {//Step PhysX simulationif(gScene) StepPhysX(); //Get current position of actor(box) and print itPxVec3 boxPos = gBox->getGlobalPose().p;cout<<"Box current Position ("<<boxPos.x <<" "<<boxPos.y <<" "<<boxPos.z<<")\n";}cout<<"\nSimulation is done, shutting down PhysX!\n";//Shut down PhysXShutdownPhysX();return EXIT_SUCCESS;
}void InitPhysX()
{//Creating foundation for PhysXgFoundation = PxCreateFoundation(PX_FOUNDATION_VERSION, gDefaultAllocatorCallback, gDefaultErrorCallback);//Creating instance of PhysX SDKgPhysicsSDK = PxCreatePhysics(PX_PHYSICS_VERSION, *gFoundation, PxTolerancesScale() );if(gPhysicsSDK == NULL) {cerr<<"Error creating PhysX3 device, Exiting..."<<endl;exit(1);}//Creating scenePxSceneDesc sceneDesc(gPhysicsSDK->getTolerancesScale()); //Descriptor class for scenes sceneDesc.gravity     = PxVec3(0.0f, -9.8f, 0.0f);       //Setting gravitysceneDesc.cpuDispatcher = PxDefaultCpuDispatcherCreate(1);    //Creates default CPU dispatcher for the scenesceneDesc.filterShader  = PxDefaultSimulationFilterShader;   //Creates default collision filter shader for the scenegScene = gPhysicsSDK->createScene(sceneDesc);                //Creates a scene //Creating PhysX materialPxMaterial* material = gPhysicsSDK->createMaterial(0.5,0.5,0.5); //Creating a PhysX material//---------Creating actors-----------]//1-Creating static plane   PxTransform planePos =    PxTransform(PxVec3(0.0f),PxQuat(PxHalfPi, PxVec3(0.0f, 0.0f, 1.0f)));   //Position and orientation(transform) for plane actor  PxRigidStatic* plane =  gPhysicsSDK->createRigidStatic(planePos);                                //Creating rigid static actor   plane->createShape(PxPlaneGeometry(), *material);                                                //Defining geometry for plane actorgScene->addActor(*plane);                                                                     //Adding plane actor to PhysX scene//2-Creating dynamic cube                                                                         PxTransform        boxPos(PxVec3(0.0f, 10.0f, 0.0f));                                              //Position and orientation(transform) for box actor PxBoxGeometry   boxGeometry(PxVec3(2,2,2));                                         //Defining geometry for box actorgBox = PxCreateDynamic(*gPhysicsSDK, boxPos, boxGeometry, *material, 1.0f);       //Creating rigid static actorgScene->addActor(*gBox);                                                        //Adding box actor to PhysX scene}void StepPhysX()                  //Stepping PhysX
{ gScene->simulate(gTimeStep);   //Advances the simulation by 'gTimeStep' timegScene->fetchResults(true);       //Block until the simulation run is completed
} void ShutdownPhysX()              //Shutdown PhysX
{gPhysicsSDK->release();         //Removes any actors,  particle systems, and constraint shaders from this scenegFoundation->release();           //Destroys the instance of foundation SDK
}

带有openGL的例子:
main.cpp

/*
=====================================================================Book              : Learning Physics Modeling with PhysX (ISBN: 978-1-84969-814-6)
Author              : Krishna Kumar
Compiler used       : Visual C++ 2010 Express
PhysX SDK version   : 3.3.0
Source code name    : ch3_1_Rigidbody
Reference Chapter   : Chapter-3: Rigid Body DynamicsDescription         : This example demonstrates how to change the properties of dynamic rigid body in PhysX.A dynamic rigid body can have properties like- mass, density, velocity, accelerationangular-motion and so on. This program also uses 'Freeglut' library which is a cross-platformwindowing toolkit that provides us OpenGL rendering context as well as keyboard and mouse events.Freeglut can be downloaded from http://freeglut.sourceforge.net=====================================================================
*//*
=====================================================================Author                : Yanjun Yang
Compiler used       : Apple LLVM version 8.1.0 (clang-802.0.42)clang llvm
PhysX SDK version   : 3.4.0
Reference Chapter   : Chapter-3: Rigid Body Dynamics=====================================================================
*/#include <iostream>
#include <PxPhysicsAPI.h> //Single header file to include all features of PhysX API
#include <GL/freeglut.h>  //OpenGL window tool kit
#include "RenderBuffer.h" //Used for rendering PhysX objetcsausing namespace std;
using namespace physx;//--------------Global variables--------------//
static PxPhysics*               gPhysicsSDK = NULL;            //Instance of PhysX SDK
static PxFoundation*            gFoundation = NULL;            //Instance of singleton foundation SDK class
static PxDefaultErrorCallback   gDefaultErrorCallback;      //Instance of default implementation of the error callback
static PxDefaultAllocator       gDefaultAllocatorCallback;  //Instance of default implementation of the allocator interface required by the SDKPxScene*                     gScene = NULL;             //Instance of PhysX Scene
PxReal                          gTimeStep = 1.0f/60.0f;        //Time-step value for PhysX simulationPxRigidDynamic*       gBox = NULL;               //Instance of box actor
PxRigidDynamic*     gConnectedBox = NULL;float gCamRoateX = 15;
float gCamRoateY = 0;
float gCamDistance  = -50;int gWindowWidth  = 800;
int gWindowHeight = 600;//-----------PhysX function prototypes------------//
void InitPhysX();       //Initialize the PhysX SDK and create actors.
void StepPhysX();       //Step PhysX simulation
void ShutdownPhysX();   //Shutdown PhysX SDK//Functions for glut callbacks
void OnRender();            //Display callback for the current glut window
void OnIdle();              //Called whenever the application is idle
void OnReshape(int, int);   //Called whenever the application window is resized
void OnShutdown();          //Called on application exitint main(int argc, char** argv)
{glutInit(&argc, argv);                         // Initialize GLUTglutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); //Enable double bufferingglutSetOption(GLUT_MULTISAMPLE, 16);glutInitWindowSize(gWindowWidth, gWindowHeight);   //Set window's initial width & heightglutCreateWindow("PhysX and openGL"); // Create a window with the given titleInitPhysX();glutDisplayFunc(OnRender); //Display callback for the current glut windowglutIdleFunc(OnIdle);     //Called whenever the application is idleglutReshapeFunc(OnReshape); //Called whenever the app window is resized//glutMouseFunc(Mouse);     //Called on mouse button event//glutMotionFunc(Motion); //Called on mouse motion eventglutMainLoop();               //Enter the event-processing loopatexit(OnShutdown);            //Called on application exitreturn EXIT_SUCCESS;
}void InitPhysX()
{//Creating foundation for PhysXgFoundation = PxCreateFoundation(PX_FOUNDATION_VERSION, gDefaultAllocatorCallback, gDefaultErrorCallback);//Creating instance of PhysX SDKgPhysicsSDK = PxCreatePhysics(PX_PHYSICS_VERSION, *gFoundation, PxTolerancesScale() );if(gPhysicsSDK == NULL){cerr<<"Error creating PhysX3 device, Exiting..."<<endl;exit(1);}//Creating scenePxSceneDesc sceneDesc(gPhysicsSDK->getTolerancesScale());  //Descriptor class for scenessceneDesc.gravity      = PxVec3(0.0f, -9.8f, 0.0f);       //Setting gravitysceneDesc.cpuDispatcher = PxDefaultCpuDispatcherCreate(1);    //Creates default CPU dispatcher for the scenesceneDesc.filterShader  = PxDefaultSimulationFilterShader;   //Creates default collision filter shader for the scenegScene = gPhysicsSDK->createScene(sceneDesc);                //Creates a scene//This will enable basic visualization of PhysX objects like- actors collision shapes and it's axis.//The function PxScene::getRenderBuffer() is used to render any active visualization for scene.gScene->setVisualizationParameter(PxVisualizationParameter::eSCALE,             1.0);   //Global visualization scale which gets multiplied with the individual scalesgScene->setVisualizationParameter(PxVisualizationParameter::eCOLLISION_SHAPES,  1.0f);  //Enable visualization of actor's shapegScene->setVisualizationParameter(PxVisualizationParameter::eACTOR_AXES,     1.0f);  //Enable visualization of actor's axisgScene->setVisualizationParameter(PxVisualizationParameter::eJOINT_LIMITS,        1.0f);gScene->setVisualizationParameter(PxVisualizationParameter::eJOINT_LOCAL_FRAMES,1.0f);//Creating PhysX material (staticFriction, dynamicFriction, restitution)PxMaterial* material = gPhysicsSDK->createMaterial(0.5f,0.5f,0.5f);//---------Creating actors-----------]//1-Creating static planePxTransform planePos =    PxTransform(PxVec3(0.0f),PxQuat(PxHalfPi, PxVec3(0.0f, 0.0f, 1.0f)));   //Position and orientation(transform) for plane actorPxRigidStatic* plane =  gPhysicsSDK->createRigidStatic(planePos);                              //Creating rigid static actorplane->createShape(PxPlaneGeometry(), *material);                                               //Defining geometry for plane actorgScene->addActor(*plane);                                                                     //Adding plane actor to PhysX scene//2-Creating dynamic cube//We will apply a force on this created actor in 'OnRender()' function{PxMaterial* mat = gPhysicsSDK->createMaterial(0.2f,0.2f,0.2f);PxTransform      boxPos(PxVec3(0.0f, 10.0f, 30.0f));PxBoxGeometry    boxGeometry(PxVec3(1.5f,1.5f,1.5f));gBox = PxCreateDynamic(*gPhysicsSDK, boxPos, boxGeometry, *mat, 1.0f);gScene->addActor(*gBox);}//3-Creating dynamic cube//We will apply initial linear velocity on the actor that will push actor upward for a while{PxTransform        boxPos(PxVec3(5.0f, 0.1f, 0.0f));PxBoxGeometry  boxGeometry(PxVec3(1.5f,1.5f,1.5f));PxRigidDynamic* box2 = PxCreateDynamic(*gPhysicsSDK, boxPos, boxGeometry, *material, 1.0f);box2->setMass(1);                            //Setting mass of the actorbox2->setLinearVelocity(PxVec3(0,25,0));  //Setting initial linear velocity on the actor (This will push actor upward for a while)gScene->addActor(*box2);}//4-Creating a box actor attached with a static actor that is free to rotate around y axis.//The box actor will keep rotating around y axis because we are applying angular velocity on it in 'OnRender()' function{PxVec3 pos = PxVec3(10,15,25);PxVec3 offset = PxVec3(0,1.5,0);PxRigidActor* staticActor = PxCreateStatic(*gPhysicsSDK, PxTransform(pos), PxSphereGeometry(0.5f), *material);gConnectedBox = PxCreateDynamic(*gPhysicsSDK, PxTransform(PxVec3(0),PxQuat(PxHalfPi,PxVec3(0,0,1))), PxBoxGeometry(0.5,0.5,4), *material, 1.0f);PxD6Joint* d6Joint = PxD6JointCreate(*gPhysicsSDK, staticActor, PxTransform(-offset), gConnectedBox, PxTransform(offset));d6Joint->setConstraintFlag(PxConstraintFlag::eVISUALIZATION, true);d6Joint->setMotion(PxD6Axis::eSWING1, PxD6Motion::eFREE);gScene->addActor(*staticActor);gScene->addActor(*gConnectedBox);}}void StepPhysX()                 //Stepping PhysX
{gScene->simulate(gTimeStep);    //Advances the simulation by 'gTimeStep' timegScene->fetchResults(true);       //Block until the simulation run is completed
}void ShutdownPhysX()               //Shutdown PhysX
{gPhysicsSDK->release();         //Removes any actors,  particle systems, and constraint shaders from this scenegFoundation->release();           //Destroys the instance of foundation SDK
}void OnRender()
{//Update PhysXif(gScene)StepPhysX();glClear(GL_COLOR_BUFFER_BIT);glLoadIdentity();glTranslatef(0,0,gCamDistance);glRotatef(gCamRoateX,1,0,0);glRotatef(gCamRoateY,0,1,0);RenderData(gScene->getRenderBuffer());gConnectedBox->setAngularVelocity(PxVec3(0,1,0)); //Applying angular velocity to the actorgBox->addForce(PxVec3(0,0,-180));                  //Applying force to the actorglutSwapBuffers();}void OnReshape(int w, int h)
{glViewport(0,0,w,h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(60, (GLfloat)w / (GLfloat)h, 0.1f, 100000.0f);glMatrixMode(GL_MODELVIEW);
}void OnIdle()
{glutPostRedisplay();
}void OnShutdown()
{ShutdownPhysX();
}

RenderBuffer.h

/*
=====================================================================File Name   : RenderBuffer.hDescription     : Functions in this header file are used for rendering the PhysX scene objects.It mainly renders primitives like- points, lines and triangles returned bythe function 'PxScene::getRenderBuffer()'.=====================================================================
*/#pragma once  #include <PxPhysicsAPI.h> //Single header file to include all features of PhysX API
#include <GL/freeglut.h>  //OpenGL window tool kit using namespace physx; void RenderBuffer(float* pVertList, float* pColorList, int type, int num);
void RenderData(const PxRenderBuffer & data);void RenderBuffer(float* pVertList, float* pColorList, int type, int num)
{glEnableClientState(GL_VERTEX_ARRAY);glVertexPointer(3,GL_FLOAT, 0, pVertList);glEnableClientState(GL_COLOR_ARRAY);glColorPointer(4, GL_FLOAT, 0, pColorList);glDrawArrays(type, 0, num);glDisableClientState(GL_COLOR_ARRAY);glDisableClientState(GL_VERTEX_ARRAY);
}void RenderData(const PxRenderBuffer & data)
{glLineWidth(1.0f);glDisable(GL_LIGHTING);//----------Render Points------------------unsigned int NbPoints = data.getNbPoints();if(NbPoints){float* pVertList = new float[NbPoints*3];float* pColorList = new float[NbPoints*4];int vertIndex = 0;int colorIndex = 0;const PxDebugPoint* Points = data.getPoints();while(NbPoints--){pVertList[vertIndex++] = Points->pos.x;pVertList[vertIndex++] = Points->pos.y;pVertList[vertIndex++] = Points->pos.z;pColorList[colorIndex++] = (float)((Points->color>>16)&0xff)/255.0f;pColorList[colorIndex++] = (float)((Points->color>>8)&0xff)/255.0f;pColorList[colorIndex++] = (float)(Points->color&0xff)/255.0f;pColorList[colorIndex++] = 1.0f;Points++;}RenderBuffer(pVertList, pColorList, GL_POINTS, data.getNbPoints());delete[] pVertList;delete[] pColorList;}//----------Render Lines------------------unsigned int NbLines = data.getNbLines();if(NbLines){float* pVertList = new float[NbLines*3*2];float* pColorList = new float[NbLines*4*2];int vertIndex = 0;int colorIndex = 0;const PxDebugLine* Lines = data.getLines();while(NbLines--){pVertList[vertIndex++] = Lines->pos0.x;pVertList[vertIndex++] = Lines->pos0.y;pVertList[vertIndex++] = Lines->pos0.z;pColorList[colorIndex++] = (float)((Lines->color0>>16)&0xff)/255.0f;pColorList[colorIndex++] = (float)((Lines->color0>>8)&0xff)/255.0f;pColorList[colorIndex++] = (float)(Lines->color0&0xff)/255.0f;pColorList[colorIndex++] = 1.0f;pVertList[vertIndex++] = Lines->pos1.x;pVertList[vertIndex++] = Lines->pos1.y;pVertList[vertIndex++] = Lines->pos1.z;pColorList[colorIndex++] = (float)((Lines->color0>>16)&0xff)/255.0f;pColorList[colorIndex++] = (float)((Lines->color0>>8)&0xff)/255.0f;pColorList[colorIndex++] = (float)(Lines->color0&0xff)/255.0f;pColorList[colorIndex++] = 1.0f;Lines++;}RenderBuffer(pVertList, pColorList, GL_LINES, data.getNbLines()*2);delete[] pVertList;delete[] pColorList;}//----------Render Triangles------------------unsigned int NbTris = data.getNbTriangles();if(NbTris){float* pVertList = new float[NbTris*3*3];float* pColorList = new float[NbTris*4*3];int vertIndex = 0;int colorIndex = 0;const PxDebugTriangle* Triangles = data.getTriangles();while(NbTris--){pVertList[vertIndex++] = Triangles->pos0.x;pVertList[vertIndex++] = Triangles->pos0.y;pVertList[vertIndex++] = Triangles->pos0.z;pVertList[vertIndex++] = Triangles->pos1.x;pVertList[vertIndex++] = Triangles->pos1.y;pVertList[vertIndex++] = Triangles->pos1.z;pVertList[vertIndex++] = Triangles->pos2.x;pVertList[vertIndex++] = Triangles->pos2.y;pVertList[vertIndex++] = Triangles->pos2.z;for(int i=0;i<3;i++){pColorList[colorIndex++] = (float)((Triangles->color0>>16)&0xff)/255.0f;pColorList[colorIndex++] = (float)((Triangles->color0>>8)&0xff)/255.0f;pColorList[colorIndex++] = (float)(Triangles->color0&0xff)/255.0f;pColorList[colorIndex++] = 1.0f;}Triangles++;}RenderBuffer(pVertList, pColorList, GL_TRIANGLES, data.getNbTriangles()*3);delete[] pVertList;delete[] pColorList;}glEnable(GL_LIGHTING);glColor4f(1.0f,1.0f,1.0f,1.0f);
}

Linux下PhysX3.4编译和环境搭建相关推荐

  1. linux上 arm开发环境搭建,详解 LINUX下QT For ARM开发环境搭建过程

    LINUX下QT For ARM开发环境搭建过程是本文介绍的内容,不多说,先来看内容.在PC上,我们需要得到两个版本的Qt,分别是:Qt-4.5.2和QtEmbedded-4.5.2-arm.前者包括 ...

  2. Linux下Matlab+CUDA双显卡环境搭建(核显+独显)

    Linux下Matlab+CUDA双显卡环境搭建(核显+独显) 最近在疯狂爱上Matlab,没办法爱折腾.皇天不负有心人,还是被本大神搞出来了,羡慕吧,嫉妒吧,反正我也看不见.(附上战果图) 硬件环境 ...

  3. jlink怎么调试linux程序_纯Linux下的 ARM裸机调试环境搭建(GDB + JLink)

    一直想摆脱windows环境,在纯linux下进行arm裸机开发,但是由于一直不知道JLink如何在linux下运行和配置,一直无法进行下去. 以前都是windows+AXD调试.包括本人用的FL24 ...

  4. Linux下app自动化测试脚本 开发环境搭建

    注!!!(作者电脑为Ubuntu20 不同发行版可能存在些许差异) 需要环境如下 java Android sdk Android模拟器 python appium java java可以直接使用ap ...

  5. rk3288 linux 编译,RK3288系统编译及环境搭建

    准备工作 编译 Android 对机器的配置要求较高: 64 位 cpu 16GB 物理内存+交换内存 30GB 空闲的磁盘空间用于构建,源码树另外占用大约 8GB 官方推荐 Ubuntu 12.04 ...

  6. win命令安装 安装cmake_win10下VSCode+CMake+Clang+GCC环境搭建教程图解

    打算用C/C++把基本的数据结构与算法实现一遍, 为考研做准备, 因为只是想实现算法和数据结构, 就不太想用VisualStudio, 感觉VSCode不错, 遂在网上找了一些教程, 结合自己的需求, ...

  7. Ubuntu 下无人机飞控 ArduPilot 开发环境搭建

    Ubuntu 下无人机飞控 ArduPilot 开发环境搭建 Ubuntu 下无人机飞控 ArduPilot 开发环境搭建 操作流程 升级安装包 安装 git 克隆代码 安装交叉编译工具链 将编译器添 ...

  8. linux下查看和添加PATH环境变量

    linux下查看和添加PATH环境变量 $PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑你的 PA ...

  9. 【Linux】5.linux下的export命令和环境变量

    linux下的export命令和环境变量 linux中在 profile 或者 bashrc 或者其他类似的文件中设置环境变量时(比如PATH),如果没有export,那么只能在直接启动的shell中 ...

最新文章

  1. PNAS | 菌群大战:“单打独斗之殇”与“分而治之之利”
  2. python通过ftp上传文本文件storlines怎么用_用python将本地文件上传到FTP报错
  3. mqtt 域名连接_中国移动OneNet物联网平台,如何使用MQTT协议,进行连接
  4. android 图标自动更新,android手机安装软件后会生成图标,但今后更新该软件图标都不会变化,如何使图标变成最新版的图标?...
  5. python批量转换图片格式_python批量将图片转换为JPEG格式
  6. java某个类避免findbug检查_Findbug插件静态java代码扫描工具使用
  7. TCP VS UDP
  8. convertTo函数的用法
  9. 在线答题-问卷调查小系统(附源码)
  10. 现国内基金定投最好的入门书《指数基金投资指南》
  11. 中级程序员晋升高级程序员,只差这几个技能
  12. 安氏图书报刊发行管理软件[酷软推荐]
  13. java实现整数翻转
  14. 调试SI4432要点
  15. 作业4: 用户体验分析——以 “师路南通网站” 为例
  16. [原创]【2011/6/8】高一名师网校课程大全
  17. 第三代电力电子半导体:SiC MOSFET学习笔记(一)SiC兴起
  18. C++(第十三篇):二叉搜索树(二叉树进阶、二叉搜索树的结构、应用及模拟实现)
  19. 【学生必备求职指南】好简历是怎样炼成的?毕业生简历实例点评版
  20. The Geodetic Set Problem - POJ 1612 Floyd求最短路径所有点集

热门文章

  1. 古典概率,条件概率,全概率
  2. centos下离线安装CM及其CDH5.14
  3. Ruby 基础教程(第5版)
  4. 构建数据大治理生态体系,保障数字经济创新发展
  5. 自学 Linux 8—文件系统简介之 Linux 下的文件系统
  6. erp用php,erp为何不用php开发
  7. piv图像处理文献综述_数字图像处理文献综述
  8. 卡方独立性检验chisq.test()
  9. 移动app html手势实现的,移动app交互设计:如何把“手势流”装进手机
  10. HBase与Hadoop生态其他组件的联系