linux下编译jrtplib-3.9.1

网站:http://blog.csdn.net/caoshangpa/article/details/51416822


一、下载jrtplib、jthread、CMake

jrtplib:http://research.edm.uhasselt.be/jori/jrtplib/jrtplib-3.9.1.zip

jthread:http://research.edm.uhasselt.be/jori/jthread/jthread-1.3.1.zip

CMake:https://cmake.org/download/,最新版已经到3.5.1,我用的是3.4.0

注意,如果jrtplib编译过程中报错/usr/bin/ld:cannot find -lIN,参考:http://blog.csdn.NET/caoshangpa/article/details/51416500

二、编译

1.jthread编译

修改CMakeLists.txt,如下所示,注意添加的部分。

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. cmake_minimum_required(VERSION 2.6)  
  2.   
  3. project(jthread)  
  4. set(VERSION 1.3.1)  
  5. #************************************添加开始******************************  
  6. #告知当前使用的是交叉编译方式    
  7. SET(CMAKE_SYSTEM_NAME Linux)    
  8. #设置c编译器    
  9. SET(CMAKE_C_COMPILER "gcc")    
  10. #设置c++编译器    
  11. SET(CMAKE_CXX_COMPILER "g++")  
  12. #设置安装路径  
  13. set(CMAKE_INSTALL_PREFIX "/usr/local/jrtplibRedHat")  
  14. #************************************添加结束******************************  
  15. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake")  
  16. set (_DEFAULT_LIBRARY_INSTALL_DIR lib)  
  17. if (EXISTS "${CMAKE_INSTALL_PREFIX}/lib32/" AND CMAKE_SIZEOF_VOID_P EQUAL 4)  
  18.     set (_DEFAULT_LIBRARY_INSTALL_DIR lib32)  
  19. elseif (EXISTS "${CMAKE_INSTALL_PREFIX}/lib64/" AND CMAKE_SIZEOF_VOID_P EQUAL 8)  
  20.     set (_DEFAULT_LIBRARY_INSTALL_DIR lib64)  
  21. endif ()  
  22.   
  23. set(LIBRARY_INSTALL_DIR "${_DEFAULT_LIBRARY_INSTALL_DIR}" CACHE PATH "Library installation directory")  
  24. if(NOT IS_ABSOLUTE "${LIBRARY_INSTALL_DIR}")  
  25.     set(LIBRARY_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIBRARY_INSTALL_DIR}")  
  26. endif()  
  27.   
  28. find_package(Threads)  
  29. if (NOT CMAKE_USE_WIN32_THREADS_INIT)  
  30.     if (NOT CMAKE_USE_PTHREADS_INIT)  
  31.         message(FATAL_ERROR "Can find neither pthread support nor Win32 thread support")  
  32.     endif (NOT CMAKE_USE_PTHREADS_INIT)  
  33. endif (NOT CMAKE_USE_WIN32_THREADS_INIT)  
  34.   
  35. add_subdirectory(src)  

cmake CMakeLists.txt

make

make install

2.jrtplib编译

修改CMakeLists.txt,如下所示,注意添加和修改的部分。

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. cmake_minimum_required(VERSION 2.6)  
  2.   
  3. project(jrtplib)  
  4. set(VERSION 3.9.1)  
  5. #************************************添加开始******************************  
  6. #告知当前使用的是交叉编译方式    
  7. SET(CMAKE_SYSTEM_NAME Linux)    
  8. #设置c编译器    
  9. SET(CMAKE_C_COMPILER "gcc")    
  10. #设置c++编译器    
  11. SET(CMAKE_CXX_COMPILER "g++")  
  12. #设置安装路径  
  13. set(CMAKE_INSTALL_PREFIX "/usr/local/jrtplibRedHat")  
  14. #************************************添加结束******************************  
  15. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake")  
  16.   
  17. set (_DEFAULT_LIBRARY_INSTALL_DIR lib)  
  18. if (EXISTS "${CMAKE_INSTALL_PREFIX}/lib32/" AND CMAKE_SIZEOF_VOID_P EQUAL 4)  
  19.     set (_DEFAULT_LIBRARY_INSTALL_DIR lib32)  
  20. elseif (EXISTS "${CMAKE_INSTALL_PREFIX}/lib64/" AND CMAKE_SIZEOF_VOID_P EQUAL 8)  
  21.     set (_DEFAULT_LIBRARY_INSTALL_DIR lib64)  
  22. endif ()  
  23.   
  24. set(LIBRARY_INSTALL_DIR "${_DEFAULT_LIBRARY_INSTALL_DIR}" CACHE PATH "Library installation directory")  
  25. if(NOT IS_ABSOLUTE "${LIBRARY_INSTALL_DIR}")  
  26.     set(LIBRARY_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIBRARY_INSTALL_DIR}")  
  27. endif()  
  28.   
  29. include(CheckCXXCompilerFlag)  
  30. include(CheckIncludeFile)  
  31. include(CheckIncludeFileCXX)  
  32. include(CheckCXXSourceCompiles)  
  33. include(TestBigEndian)  
  34. include(${PROJECT_SOURCE_DIR}/cmake/Macros.cmake)  
  35.   
  36. find_package(JThread)  
  37.   
  38. set(JRTPLIB_LINK_LIBS "")  
  39. #************************************修改开始******************************  
  40. set(JRTPLIB_INTERNAL_INCLUDES "/usr/local/jrtplibRedHat/include")  
  41. set(JRTPLIB_EXTERNAL_INCLUDES "/usr/local/jrtplibRedHat/include")  
  42. #************************************修改结束******************************  
  43. add_additional_stuff(JRTPLIB_EXTERNAL_INCLUDES JRTPLIB_LINK_LIBS)  
  44.   
  45. jrtplib_support_option("Support SDES PRIV items" JRTPLIB_SUPPORT_SDESPRIV RTP_SUPPORT_SDESPRIV ON "// No support for SDES PRIV items")  
  46. jrtplib_support_option("Support the probation mechanism for a new source" JRTPLIB_SUPPORT_PROBATION RTP_SUPPORT_PROBATION ON "// Do not wait for a number of consecutive packets to validate source")  
  47. jrtplib_support_option("Support sending RTCP APP packets" JRTPLIB_SUPPORT_SENDAPP RTP_SUPPORT_SENDAPP ON "// No direct support for sending RTCP APP packets")  
  48. jrtplib_support_option("Support sending unknown RTCP packets" JRTPLIB_SUPPORT_RTCPUNKNOWN RTP_SUPPORT_RTCPUNKNOWN OFF "// No support for sending unknown RTCP packets")  
  49. jrtplib_support_option("Support memory management mechanism" JRTPLIB_SUPPORT_MEMORYMGMT RTP_SUPPORT_MEMORYMANAGEMENT ON "// No memory management support")  
  50.   
  51. jrtplib_include_test(sys/filio.h RTP_HAVE_SYS_FILIO "// Don't have <sys/filio.h>")  
  52. jrtplib_include_test(sys/sockio.h RTP_HAVE_SYS_SOCKIO "// Don't have <sys/sockio.h>")  
  53. jrtplib_include_test(ifaddrs.h RTP_SUPPORT_IFADDRS "// No ifaddrs support")  
  54.   
  55. if (JTHREAD_FOUND)  
  56.     set(V "ON")  
  57. else (JTHREAD_FOUND)  
  58.     set(V "OFF")  
  59. endif (JTHREAD_FOUND)  
  60.   
  61. option(JTHREAD_ENABLED "Thread support" ${V})  
  62. if (JTHREAD_ENABLED)  
  63.     set (RTP_SUPPORT_THREAD "#define RTP_SUPPORT_THREAD")  
  64.     if (JTHREAD_FOUND)  
  65.         save_paths(JRTPLIB_EXTERNAL_INCLUDES "${JTHREAD_INCLUDE_DIRS}")  
  66.         save_paths(JRTPLIB_LINK_LIBS "${JTHREAD_LIBRARIES}")  
  67.     endif(JTHREAD_FOUND)  
  68. else (JTHREAD_ENABLED)  
  69.     set (RTP_SUPPORT_THREAD "// No support for JThread was enabled")  
  70. endif (JTHREAD_ENABLED)  
  71.   
  72. if (CMAKE_CROSSCOMPILING)  
  73.     option (JRTPLIB_USE_BIGENDIAN "Target platform is big endian" ON)  
  74.     if (JRTPLIB_USE_BIGENDIAN)  
  75.         set(RTP_ENDIAN "#define RTP_BIG_ENDIAN")  
  76.     else (JRTPLIB_USE_BIGENDIAN)  
  77.         set(RTP_ENDIAN "// Little endian system")  
  78.     endif (JRTPLIB_USE_BIGENDIAN)  
  79. else (CMAKE_CROSSCOMPILING)  
  80.     test_big_endian(JRTPLIB_BIGENDIAN)  
  81.     if (JRTPLIB_BIGENDIAN)  
  82.         set(RTP_ENDIAN "#define RTP_BIG_ENDIAN")  
  83.     else (JRTPLIB_BIGENDIAN)  
  84.         set(RTP_ENDIAN "// Little endian system")  
  85.     endif (JRTPLIB_BIGENDIAN)  
  86. endif (CMAKE_CROSSCOMPILING)  
  87.   
  88. jrtplib_test_feature(socklentest RTP_SOCKLENTYPE_UINT TRUE "// socklen_t is 'int'")  
  89. jrtplib_test_feature(ipv4mcasttest RTP_SUPPORT_IPV4MULTICAST FALSE "// No IPv4 multicasting support")  
  90. jrtplib_test_feature(salentest RTP_HAVE_SOCKADDR_LEN FALSE "// No sa_len member in struct sockaddr")  
  91. jrtplib_test_feature(getloginrtest RTP_SUPPORT_GETLOGINR FALSE "// Not using getlogin_r")  
  92. jrtplib_test_feature(ipv6test RTP_SUPPORT_IPV6 FALSE "// No IPv6 support")  
  93. jrtplib_test_feature(ipv6mcasttest RTP_SUPPORT_IPV6MULTICAST FALSE "// No IPv6 multicasting support")  
  94.   
  95. check_cxx_source_compiles("#include <stdint.h>\n#include <sys/types.h>\nint main(void) { size_t a = 0 ; size_t b = a; uint32_t x = 0; uint32_t y = x; return 0; }" JRTPLIB_STDINT)  
  96. if (JRTPLIB_STDINT)  
  97.     set(RTP_INTTYPE_HEADERS "#include <stdint.h>\n#include <sys/types.h>")  
  98. else (JRTPLIB_STDINT)  
  99.     check_cxx_source_compiles("#include <inttypes.h>\n#include <sys/types.h>\nint main(void) { uint32_t x = 0; uint32_t y = x; return 0; }" JRTPLIB_INTTYPES)  
  100.     if (JRTPLIB_INTTYPES)  
  101.         set(RTP_INTTYPE_HEADERS "#include <inttypes.h>\n#include <sys/types.h>\n")  
  102.     else (JRTPLIB_INTTYPES)  
  103.         if (NOT UNIX AND WIN32)  
  104.             set(RTP_INTTYPE_HEADERS "#include \"rtptypes_win.h\"")  
  105.         else (NOT UNIX AND WIN32)  
  106.             set(RTP_INTTYPE_HEADERS "#error Could not find header files that define types like 'uint32_t'. Please edit the file ${PROJECT_BINARY_DIR}/src/rtptypes_unix.h and make sure that the following types are defined: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t")  
  107.             message("\n\nError: Could not find header files that define types like 'uint32_t'.\nPlease edit the file ${PROJECT_BINARY_DIR}/src/rtptypes_unix.h\nand make sure that the following types are defined: \nint8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t\n\n")  
  108.         endif (NOT UNIX AND WIN32)  
  109.     endif (JRTPLIB_INTTYPES)  
  110. endif (JRTPLIB_STDINT)  
  111.   
  112. if (NOT UNIX AND WIN32)  
  113.     set(RTP_WINSOCK_HEADERS "#if defined(WIN32) || defined(_WIN32_WCE)\n    #include <winsock2.h> \n  #include <ws2tcpip.h>\n#ifndef _WIN32_WCE\n   #include <sys/types.h>\n#endif // _WIN32_WCE\n#endif // WIN32 || _WIN32_WCE\n")  
  114. endif (NOT UNIX AND WIN32)  
  115.   
  116. if (NOT UNIX)  
  117.     set(JRTPLIB_COMPILE_STATIC ON CACHE BOOL "Flag indicating if a static library should be built, or a dynamic one")  
  118.     list(APPEND JRTPLIB_LINK_LIBS "ws2_32")  
  119. endif (NOT UNIX)  
  120.   
  121. if (UNIX OR JRTPLIB_COMPILE_STATIC)  
  122.     set(JRTPLIB_IMPORT "")  
  123.     set(JRTPLIB_EXPORT "")  
  124. else (UNIX OR JRTPLIB_COMPILE_STATIC)  
  125.     set(JRTPLIB_IMPORT "__declspec(dllimport)")  
  126.     set(JRTPLIB_EXPORT "__declspec(dllexport)")  
  127. endif (UNIX OR JRTPLIB_COMPILE_STATIC)  
  128.   
  129. configure_file("${PROJECT_SOURCE_DIR}/src/rtptypes.h.in" "${PROJECT_BINARY_DIR}/src/rtptypes.h")  
  130. configure_file("${PROJECT_SOURCE_DIR}/src/rtpconfig.h.in" "${PROJECT_BINARY_DIR}/src/rtpconfig.h")  
  131.   
  132. save_paths(JRTPLIB_INTERNAL_INCLUDES "${PROJECT_SOURCE_DIR}/src" "${PROJECT_BINARY_DIR}/src")  
  133.   
  134. add_subdirectory(src)  
  135.   
  136.    
  137. if (UNIX)  
  138.     get_target_property(JRTPLIB_LOCAL_LIBRARY_NAME jrtplib-shared LOCATION)  
  139.     get_filename_component(JRTPLIB_LIBNAME "${JRTPLIB_LOCAL_LIBRARY_NAME}" NAME)  
  140.     set(JRTPLIB_LIBS "${LIBRARY_INSTALL_DIR}/${JRTPLIB_LIBNAME}")  
  141. else (UNIX)  
  142.     if (JRTPLIB_COMPILE_STATIC)  
  143.         get_target_property(JRTPLIB_LOCAL_LIBRARY_NAME jrtplib-static RELEASE_LOCATION)  
  144.         get_filename_component(JRTPLIB_LIBNAME_RELEASE "${JRTPLIB_LOCAL_LIBRARY_NAME}" NAME_WE)  
  145.         get_target_property(JRTPLIB_LOCAL_LIBRARY_NAME jrtplib-static DEBUG_LOCATION)  
  146.         get_filename_component(JRTPLIB_LIBNAME_DEBUG "${JRTPLIB_LOCAL_LIBRARY_NAME}" NAME_WE)  
  147.     else (JRTPLIB_COMPILE_STATIC)  
  148.         get_target_property(JRTPLIB_LOCAL_LIBRARY_NAME jrtplib-shared RELEASE_LOCATION)  
  149.         get_filename_component(JRTPLIB_LIBNAME_RELEASE "${JRTPLIB_LOCAL_LIBRARY_NAME}" NAME_WE)  
  150.         get_target_property(JRTPLIB_LOCAL_LIBRARY_NAME jrtplib-shared DEBUG_LOCATION)  
  151.         get_filename_component(JRTPLIB_LIBNAME_DEBUG "${JRTPLIB_LOCAL_LIBRARY_NAME}" NAME_WE)  
  152.     endif (JRTPLIB_COMPILE_STATIC)  
  153.     set(JRTPLIB_LIBS optimized "${LIBRARY_INSTALL_DIR}/${JRTPLIB_LIBNAME_RELEASE}.lib"   
  154.                  debug "${LIBRARY_INSTALL_DIR}/${JRTPLIB_LIBNAME_DEBUG}.lib")  
  155. endif (UNIX)  
  156.   
  157. set(JRTPLIB_INCDIRS ${JRTPLIB_EXTERNAL_INCLUDES} ${CMAKE_INSTALL_PREFIX}/include)  
  158. set(JRTPLIB_LIBS ${JRTPLIB_LIBS} ${JRTPLIB_LINK_LIBS})  
  159. remove_empty(JRTPLIB_INCDIRS)  
  160. list(REMOVE_DUPLICATES JRTPLIB_INCDIRS)  
  161. remove_empty(JRTPLIB_LIBS)  
  162.   
  163. foreach(ARG ${JRTPLIB_LIBS})  
  164.     set(JRTPLIB_LIBS_CMAKECONFIG "${JRTPLIB_LIBS_CMAKECONFIG} \"${ARG}\"")  
  165. endforeach()  
  166. foreach(ARG ${JRTPLIB_INCDIRS})  
  167.     set(JRTPLIB_INCDIRS_CMAKECONFIG "${JRTPLIB_INCDIRS_CMAKECONFIG} \"${ARG}\"")  
  168. endforeach()  
  169.   
  170. configure_file("${PROJECT_SOURCE_DIR}/cmake/JRTPLIBConfig.cmake.in" "${PROJECT_BINARY_DIR}/cmake/JRTPLIBConfig.cmake")  
  171. install(FILES "${PROJECT_BINARY_DIR}/cmake/JRTPLIBConfig.cmake" DESTINATION ${LIBRARY_INSTALL_DIR}/cmake/JRTPLIB)  
  172.   
  173. if (UNIX)  
  174.     foreach(ARG ${JRTPLIB_LIBS})  
  175.         set(JRTPLIB_LIBS_PKGCONFIG "${JRTPLIB_LIBS_PKGCONFIG} ${ARG}")  
  176.     endforeach()  
  177.     foreach(ARG ${JRTPLIB_INCDIRS})  
  178.         set(JRTPLIB_INCDIRS_PKGCONFIG "${JRTPLIB_INCDIRS_PKGCONFIG} -I${ARG}")  
  179.     endforeach()  
  180.   
  181.     configure_file(${PROJECT_SOURCE_DIR}/pkgconfig/jrtplib.pc.in ${PROJECT_BINARY_DIR}/pkgconfig/jrtplib.pc)  
  182.     install(FILES ${PROJECT_BINARY_DIR}/pkgconfig/jrtplib.pc DESTINATION ${LIBRARY_INSTALL_DIR}/pkgconfig)  
  183. endif (UNIX)  

cmake CMakeLists.txt

make

make install



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql从入门到精通之数据库基本概念理解

生活中的记账&#xff0c;帐&#xff1a;就是数据&#xff0c;或者简单理解为信息吧。记账&#xff1a;就是存储数据、信息生活中记账都是记在哪儿呢&#xff1f;比如&#xff1a;门上、墙上、日历上无论记在哪儿&#xff1f;特点&#xff1a;记录的都是信息&#xff0c;变化的…

windbg 常用命令详解

&#xfeff;&#xfeff;一、 1、 !address eax 查看对应内存页的属性 2、 vertarget 显示当前进程的大致信息 3 !peb 显示process Environment Block 4、 lmvm 可以查看任意一个dll的详细信息 例如&#xff1a;我们查看cyusb.sys的信息 5.reload !sym 加载符号文件 6…

JS 与Flex交互:html中的js 与flex中的actionScript通信

Flex与JavaScript交互的问题&#xff0c;这里和大家分享一下&#xff0c;主要包括Flex调用JavaScript中的函数和JavaScript调用Flex中的函数两大部分内容。 Flex 与JavaScript 交互&#xff0c;主要依靠Flex的ExternalInterface&#xff0c;其提供了addCallBack和call方法。 一…

poj3615

floyd水题&#xff0c;将map[i][j]理解为从i到j的路径中高度最小即可&#xff0c;将松弛条件改为map[i][j]MIN(map[i][j],MAX(map[i][k],map[k][j]));好好理解一下吧 View Code 1 #include <stdio.h> 2 #include <string.h> 3 #define MAXN 310 4 #define INF (1&…

H264码流打包分析(精华)

网页&#xff1a;https://www.cnblogs.com/lidabo/p/4602422.htmlH264码流打包分析SODB 数据比特串&#xff0d;&#xff0d;&#xff1e;最原始的编码数据RBSP 原始字节序列载荷&#xff0d;&#xff0d;&#xff1e;在SODB的后面填加了结尾比特&#xff08;RBSP trailing b…

postman安装和简单使用

postman 模拟向接口发送请求&#xff0c;测试接口 下载 https://www.getpostman.com/downloads/ 使用 朝地址发请求&#xff0c;拿到json格式的数据 想看的层次更分明可以上网搜json 给后端发送数据 转载于:https://www.cnblogs.com/zhengyuli/p/11117632.html

QC使用流程(1)之安装篇

1、准备环境 1.1、安装操作系统 本次教程使用的操作系统是Windows Server 2003&#xff0c;安装在虚拟机6.5上。 1.2、安装数据库 本次教程使用的数据库是Microsoft SQL Server 2000 简体中文企业版 SP4升级补丁 具体安装步骤如下&#xff1a; 1)、打开数据库安装程序&#xff…

Java连载1-概述常用的dos命令

本想写完那两个再开始新的&#xff0c;然而客观条件不允许&#xff0c;之前从未接触过Java&#xff0c;从零开始吧​&#xff01;&#xff01;&#xff01; 一、概述 C盘下​&#xff1a;programme file 一般为64位程序安装的目录&#xff0c;programme file&#xff08;X86&am…

SQL 查询--日期条件(今日、昨日、本周、本月。。。) (转)

主要用到sql 函数 DATEDIFF(datepart,startdate,enddate) sql 语句&#xff0c;设 有 数据库表 tableA&#xff08;日期字段ddate&#xff09; ——查询 今日 select * from tableA where DateDiff(dd,VoucherDate,getdate()) 0 ——查询 昨日 select * from tableA where …

SRTP参数及数据包处理过程

http://www.rosoo.net/a/201606/17449.html 原链接 目录 1. 相关参数介绍... 1 1.1 SRTP. 1 1.1.1 两种Key. 1 1.1.2 与传输无关的参数... 1 1.1.3 SRTP流相关参数... 2 1.2 SRTCP. 2 1.3 …

【第二章】 IoC 之 2.1 IoC基础 ——跟我学Spring3

2.1.1 IoC是什么 Ioc—Inversion of Control&#xff0c;即“控制反转”&#xff0c;不是什么技术&#xff0c;而是一种设计思想。在Java开发中&#xff0c;Ioc意味着将你设计好的对象交给容器控制&#xff0c;而不是传统的在你的对象内部直接控制。如何理解好Ioc呢&#xff1…

排队 题解 组合数学+高精度

因为实在是写不动了&#xff0c;所以菜鸡颓博客为了信奥发展的伟大未来作出一点小小的贡献 题目描述 某中学有 n 名男同学&#xff0c;m 名女同学和两名老师要排队参加体检。他们排成一条直线&#xff0c;并且任意两名女同学不能相邻&#xff0c;两名老师也不能相邻&#xff0c…

在window下搭建TensorFlow

网站&#xff1a;https://blog.csdn.net/chduguxue/article/details/793922201.首先查看TensorFlow目前对Windows支持的python版本要求 https://pypi.python.org/pypi/tensorflow/1.1.0rc2截止本文2018年2月27日&#xff0c;要求python是3.5&#xff0c;操作系统64位 如果pytho…

广播、组播、点播的区别

原网站:https://blog.csdn.net/z502521809/article/details/53007932 今天学习的时候发现了广播、组播、点播这三个用来描述网络节点之间通讯方式的术语&#xff0c;那么这几种“播”到底有什么区别&#xff1f;于是乎百度总结了一下。 ----------------------------------点播…

Arm架构下VUE环境的安装

最近因为项目需要在arm环境下搭建vue环境&#xff0c;网上有基于Linux的 教程&#xff0c;路径略有不同&#xff0c;现整理如下 1、安装文件下载 1、下载地址&#xff1a;http://nodejs.cn/download/ 2、选择一个合适的版本下载 2、安装步骤 1、将安装包上传到指定位置(我习惯放…

网络安全技术之端口隔离

端口隔离技术是一种实现在客户端的端口间的足够的隔离度以保证一个客户端不会收到另外一个客户端的流量的技术。通过端口隔离技术&#xff0c;用户可以将需要进行控制的端口加入到一个隔离组中&#xff0c;实现隔离组中的端口之间二层、三层数据的隔离&#xff0c;既增强了网络…

python解释器、pycharm安装及环境变量配置

python解释器、pycharm安装及环境变量配置 1.python解释器安装 下载地址&#xff1a;https://www.python.org/ 打开官网&#xff0c;点击downloads,选择操作系统&#xff0c;以windows为例&#xff1a; 选择python2与python3解释器版本&#xff08;以python3.6.6及python2.7.16…

RHEL6.4 Keepalive+LVS(DR)部署文档

1、简介LVSKeepalived 能实现的功能:利用 LVS 控制器主备模式避免单点故障以及自动删除故障 WEB 服务器结点并当它恢复后再自动添加到群集中。拓扑图:2、系统环境系统平台:RHEL6.4硬件平台:dell R720*4硬件参数:cpu(e5-2609)两颗;内存 32G;磁盘 600G*6;RAID 5 ;双电源LVS 版本:…

非阻塞I/O多路复用机制

题外话&#xff1a;我们现在要仔细的说一说I/O多路复用机制&#xff0c;因为这个说法实在是太通俗了&#xff0c;通俗到一般人都不懂是什么意思。博主打一个比方&#xff1a;小曲在S城开了一家快递店&#xff0c;负责同城快送服务。小曲因为资金限制&#xff0c;雇佣了一批快递…

Windows平台WebRTC编译-VS2017

转载网站&#xff1a;https://blog.jianchihu.net/webrtc-build-vs2017.html 在音视频领域&#xff0c;想深入研究的话&#xff0c;必定会接触WebRTC。WebRTC是一个庞大的工程&#xff0c;就像是音视频领域的百科全书&#xff0c;音视频采集&#xff0c;编解码&#xff0c;传输…