日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下编译jrtplib-3.9.1

發(fā)布時(shí)間:2023/12/20 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下编译jrtplib-3.9.1 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

網(wǎng)站: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/,最新版已經(jīng)到3.5.1,我用的是3.4.0

注意,如果jrtplib編譯過程中報(bào)錯(cuò)/usr/bin/ld:cannot find -lIN,參考:http://blog.csdn.NET/caoshangpa/article/details/51416500

二、編譯

1.jthread編譯

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

[cpp]?view plaincopy
  • cmake_minimum_required(VERSION?2.6)??
  • ??
  • project(jthread)??
  • set(VERSION?1.3.1)??
  • #************************************添加開始******************************??
  • #告知當(dāng)前使用的是交叉編譯方式????
  • SET(CMAKE_SYSTEM_NAME?Linux)????
  • #設(shè)置c編譯器????
  • SET(CMAKE_C_COMPILER?"gcc")????
  • #設(shè)置c++編譯器????
  • SET(CMAKE_CXX_COMPILER?"g++")??
  • #設(shè)置安裝路徑??
  • set(CMAKE_INSTALL_PREFIX?"/usr/local/jrtplibRedHat")??
  • #************************************添加結(jié)束******************************??
  • set(CMAKE_MODULE_PATH?${CMAKE_MODULE_PATH}?"${PROJECT_SOURCE_DIR}/cmake")??
  • set?(_DEFAULT_LIBRARY_INSTALL_DIR?lib)??
  • if?(EXISTS?"${CMAKE_INSTALL_PREFIX}/lib32/"?AND?CMAKE_SIZEOF_VOID_P?EQUAL?4)??
  • ????set?(_DEFAULT_LIBRARY_INSTALL_DIR?lib32)??
  • elseif?(EXISTS?"${CMAKE_INSTALL_PREFIX}/lib64/"?AND?CMAKE_SIZEOF_VOID_P?EQUAL?8)??
  • ????set?(_DEFAULT_LIBRARY_INSTALL_DIR?lib64)??
  • endif?()??
  • ??
  • set(LIBRARY_INSTALL_DIR?"${_DEFAULT_LIBRARY_INSTALL_DIR}"?CACHE?PATH?"Library?installation?directory")??
  • if(NOT?IS_ABSOLUTE?"${LIBRARY_INSTALL_DIR}")??
  • ????set(LIBRARY_INSTALL_DIR?"${CMAKE_INSTALL_PREFIX}/${LIBRARY_INSTALL_DIR}")??
  • endif()??
  • ??
  • find_package(Threads)??
  • if?(NOT?CMAKE_USE_WIN32_THREADS_INIT)??
  • ????if?(NOT?CMAKE_USE_PTHREADS_INIT)??
  • ????????message(FATAL_ERROR?"Can?find?neither?pthread?support?nor?Win32?thread?support")??
  • ????endif?(NOT?CMAKE_USE_PTHREADS_INIT)??
  • endif?(NOT?CMAKE_USE_WIN32_THREADS_INIT)??
  • ??
  • add_subdirectory(src)??
  • cmake CMakeLists.txt

    make

    make install

    2.jrtplib編譯

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

    [cpp]?view plaincopy
  • cmake_minimum_required(VERSION?2.6)??
  • ??
  • project(jrtplib)??
  • set(VERSION?3.9.1)??
  • #************************************添加開始******************************??
  • #告知當(dāng)前使用的是交叉編譯方式????
  • SET(CMAKE_SYSTEM_NAME?Linux)????
  • #設(shè)置c編譯器????
  • SET(CMAKE_C_COMPILER?"gcc")????
  • #設(shè)置c++編譯器????
  • SET(CMAKE_CXX_COMPILER?"g++")??
  • #設(shè)置安裝路徑??
  • set(CMAKE_INSTALL_PREFIX?"/usr/local/jrtplibRedHat")??
  • #************************************添加結(jié)束******************************??
  • set(CMAKE_MODULE_PATH?${CMAKE_MODULE_PATH}?"${PROJECT_SOURCE_DIR}/cmake")??
  • ??
  • set?(_DEFAULT_LIBRARY_INSTALL_DIR?lib)??
  • if?(EXISTS?"${CMAKE_INSTALL_PREFIX}/lib32/"?AND?CMAKE_SIZEOF_VOID_P?EQUAL?4)??
  • ????set?(_DEFAULT_LIBRARY_INSTALL_DIR?lib32)??
  • elseif?(EXISTS?"${CMAKE_INSTALL_PREFIX}/lib64/"?AND?CMAKE_SIZEOF_VOID_P?EQUAL?8)??
  • ????set?(_DEFAULT_LIBRARY_INSTALL_DIR?lib64)??
  • endif?()??
  • ??
  • set(LIBRARY_INSTALL_DIR?"${_DEFAULT_LIBRARY_INSTALL_DIR}"?CACHE?PATH?"Library?installation?directory")??
  • if(NOT?IS_ABSOLUTE?"${LIBRARY_INSTALL_DIR}")??
  • ????set(LIBRARY_INSTALL_DIR?"${CMAKE_INSTALL_PREFIX}/${LIBRARY_INSTALL_DIR}")??
  • endif()??
  • ??
  • include(CheckCXXCompilerFlag)??
  • include(CheckIncludeFile)??
  • include(CheckIncludeFileCXX)??
  • include(CheckCXXSourceCompiles)??
  • include(TestBigEndian)??
  • include(${PROJECT_SOURCE_DIR}/cmake/Macros.cmake)??
  • ??
  • find_package(JThread)??
  • ??
  • set(JRTPLIB_LINK_LIBS?"")??
  • #************************************修改開始******************************??
  • set(JRTPLIB_INTERNAL_INCLUDES?"/usr/local/jrtplibRedHat/include")??
  • set(JRTPLIB_EXTERNAL_INCLUDES?"/usr/local/jrtplibRedHat/include")??
  • #************************************修改結(jié)束******************************??
  • add_additional_stuff(JRTPLIB_EXTERNAL_INCLUDES?JRTPLIB_LINK_LIBS)??
  • ??
  • jrtplib_support_option("Support?SDES?PRIV?items"?JRTPLIB_SUPPORT_SDESPRIV?RTP_SUPPORT_SDESPRIV?ON?"//?No?support?for?SDES?PRIV?items")??
  • 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")??
  • jrtplib_support_option("Support?sending?RTCP?APP?packets"?JRTPLIB_SUPPORT_SENDAPP?RTP_SUPPORT_SENDAPP?ON?"//?No?direct?support?for?sending?RTCP?APP?packets")??
  • jrtplib_support_option("Support?sending?unknown?RTCP?packets"?JRTPLIB_SUPPORT_RTCPUNKNOWN?RTP_SUPPORT_RTCPUNKNOWN?OFF?"//?No?support?for?sending?unknown?RTCP?packets")??
  • jrtplib_support_option("Support?memory?management?mechanism"?JRTPLIB_SUPPORT_MEMORYMGMT?RTP_SUPPORT_MEMORYMANAGEMENT?ON?"//?No?memory?management?support")??
  • ??
  • jrtplib_include_test(sys/filio.h?RTP_HAVE_SYS_FILIO?"//?Don't?have?<sys/filio.h>")??
  • jrtplib_include_test(sys/sockio.h?RTP_HAVE_SYS_SOCKIO?"//?Don't?have?<sys/sockio.h>")??
  • jrtplib_include_test(ifaddrs.h?RTP_SUPPORT_IFADDRS?"//?No?ifaddrs?support")??
  • ??
  • if?(JTHREAD_FOUND)??
  • ????set(V?"ON")??
  • else?(JTHREAD_FOUND)??
  • ????set(V?"OFF")??
  • endif?(JTHREAD_FOUND)??
  • ??
  • option(JTHREAD_ENABLED?"Thread?support"?${V})??
  • if?(JTHREAD_ENABLED)??
  • ????set?(RTP_SUPPORT_THREAD?"#define?RTP_SUPPORT_THREAD")??
  • ????if?(JTHREAD_FOUND)??
  • ????????save_paths(JRTPLIB_EXTERNAL_INCLUDES?"${JTHREAD_INCLUDE_DIRS}")??
  • ????????save_paths(JRTPLIB_LINK_LIBS?"${JTHREAD_LIBRARIES}")??
  • ????endif(JTHREAD_FOUND)??
  • else?(JTHREAD_ENABLED)??
  • ????set?(RTP_SUPPORT_THREAD?"//?No?support?for?JThread?was?enabled")??
  • endif?(JTHREAD_ENABLED)??
  • ??
  • if?(CMAKE_CROSSCOMPILING)??
  • ????option?(JRTPLIB_USE_BIGENDIAN?"Target?platform?is?big?endian"?ON)??
  • ????if?(JRTPLIB_USE_BIGENDIAN)??
  • ????????set(RTP_ENDIAN?"#define?RTP_BIG_ENDIAN")??
  • ????else?(JRTPLIB_USE_BIGENDIAN)??
  • ????????set(RTP_ENDIAN?"//?Little?endian?system")??
  • ????endif?(JRTPLIB_USE_BIGENDIAN)??
  • else?(CMAKE_CROSSCOMPILING)??
  • ????test_big_endian(JRTPLIB_BIGENDIAN)??
  • ????if?(JRTPLIB_BIGENDIAN)??
  • ????????set(RTP_ENDIAN?"#define?RTP_BIG_ENDIAN")??
  • ????else?(JRTPLIB_BIGENDIAN)??
  • ????????set(RTP_ENDIAN?"//?Little?endian?system")??
  • ????endif?(JRTPLIB_BIGENDIAN)??
  • endif?(CMAKE_CROSSCOMPILING)??
  • ??
  • jrtplib_test_feature(socklentest?RTP_SOCKLENTYPE_UINT?TRUE?"//?socklen_t?is?'int'")??
  • jrtplib_test_feature(ipv4mcasttest?RTP_SUPPORT_IPV4MULTICAST?FALSE?"//?No?IPv4?multicasting?support")??
  • jrtplib_test_feature(salentest?RTP_HAVE_SOCKADDR_LEN?FALSE?"//?No?sa_len?member?in?struct?sockaddr")??
  • jrtplib_test_feature(getloginrtest?RTP_SUPPORT_GETLOGINR?FALSE?"//?Not?using?getlogin_r")??
  • jrtplib_test_feature(ipv6test?RTP_SUPPORT_IPV6?FALSE?"//?No?IPv6?support")??
  • jrtplib_test_feature(ipv6mcasttest?RTP_SUPPORT_IPV6MULTICAST?FALSE?"//?No?IPv6?multicasting?support")??
  • ??
  • 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)??
  • if?(JRTPLIB_STDINT)??
  • ????set(RTP_INTTYPE_HEADERS?"#include?<stdint.h>\n#include?<sys/types.h>")??
  • else?(JRTPLIB_STDINT)??
  • ????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)??
  • ????if?(JRTPLIB_INTTYPES)??
  • ????????set(RTP_INTTYPE_HEADERS?"#include?<inttypes.h>\n#include?<sys/types.h>\n")??
  • ????else?(JRTPLIB_INTTYPES)??
  • ????????if?(NOT?UNIX?AND?WIN32)??
  • ????????????set(RTP_INTTYPE_HEADERS?"#include?\"rtptypes_win.h\"")??
  • ????????else?(NOT?UNIX?AND?WIN32)??
  • ????????????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")??
  • ????????????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")??
  • ????????endif?(NOT?UNIX?AND?WIN32)??
  • ????endif?(JRTPLIB_INTTYPES)??
  • endif?(JRTPLIB_STDINT)??
  • ??
  • if?(NOT?UNIX?AND?WIN32)??
  • ????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")??
  • endif?(NOT?UNIX?AND?WIN32)??
  • ??
  • if?(NOT?UNIX)??
  • ????set(JRTPLIB_COMPILE_STATIC?ON?CACHE?BOOL?"Flag?indicating?if?a?static?library?should?be?built,?or?a?dynamic?one")??
  • ????list(APPEND?JRTPLIB_LINK_LIBS?"ws2_32")??
  • endif?(NOT?UNIX)??
  • ??
  • if?(UNIX?OR?JRTPLIB_COMPILE_STATIC)??
  • ????set(JRTPLIB_IMPORT?"")??
  • ????set(JRTPLIB_EXPORT?"")??
  • else?(UNIX?OR?JRTPLIB_COMPILE_STATIC)??
  • ????set(JRTPLIB_IMPORT?"__declspec(dllimport)")??
  • ????set(JRTPLIB_EXPORT?"__declspec(dllexport)")??
  • endif?(UNIX?OR?JRTPLIB_COMPILE_STATIC)??
  • ??
  • configure_file("${PROJECT_SOURCE_DIR}/src/rtptypes.h.in"?"${PROJECT_BINARY_DIR}/src/rtptypes.h")??
  • configure_file("${PROJECT_SOURCE_DIR}/src/rtpconfig.h.in"?"${PROJECT_BINARY_DIR}/src/rtpconfig.h")??
  • ??
  • save_paths(JRTPLIB_INTERNAL_INCLUDES?"${PROJECT_SOURCE_DIR}/src"?"${PROJECT_BINARY_DIR}/src")??
  • ??
  • add_subdirectory(src)??
  • ??
  • ???
  • if?(UNIX)??
  • ????get_target_property(JRTPLIB_LOCAL_LIBRARY_NAME?jrtplib-shared?LOCATION)??
  • ????get_filename_component(JRTPLIB_LIBNAME?"${JRTPLIB_LOCAL_LIBRARY_NAME}"?NAME)??
  • ????set(JRTPLIB_LIBS?"${LIBRARY_INSTALL_DIR}/${JRTPLIB_LIBNAME}")??
  • else?(UNIX)??
  • ????if?(JRTPLIB_COMPILE_STATIC)??
  • ????????get_target_property(JRTPLIB_LOCAL_LIBRARY_NAME?jrtplib-static?RELEASE_LOCATION)??
  • ????????get_filename_component(JRTPLIB_LIBNAME_RELEASE?"${JRTPLIB_LOCAL_LIBRARY_NAME}"?NAME_WE)??
  • ????????get_target_property(JRTPLIB_LOCAL_LIBRARY_NAME?jrtplib-static?DEBUG_LOCATION)??
  • ????????get_filename_component(JRTPLIB_LIBNAME_DEBUG?"${JRTPLIB_LOCAL_LIBRARY_NAME}"?NAME_WE)??
  • ????else?(JRTPLIB_COMPILE_STATIC)??
  • ????????get_target_property(JRTPLIB_LOCAL_LIBRARY_NAME?jrtplib-shared?RELEASE_LOCATION)??
  • ????????get_filename_component(JRTPLIB_LIBNAME_RELEASE?"${JRTPLIB_LOCAL_LIBRARY_NAME}"?NAME_WE)??
  • ????????get_target_property(JRTPLIB_LOCAL_LIBRARY_NAME?jrtplib-shared?DEBUG_LOCATION)??
  • ????????get_filename_component(JRTPLIB_LIBNAME_DEBUG?"${JRTPLIB_LOCAL_LIBRARY_NAME}"?NAME_WE)??
  • ????endif?(JRTPLIB_COMPILE_STATIC)??
  • ????set(JRTPLIB_LIBS?optimized?"${LIBRARY_INSTALL_DIR}/${JRTPLIB_LIBNAME_RELEASE}.lib"???
  • ?????????????????debug?"${LIBRARY_INSTALL_DIR}/${JRTPLIB_LIBNAME_DEBUG}.lib")??
  • endif?(UNIX)??
  • ??
  • set(JRTPLIB_INCDIRS?${JRTPLIB_EXTERNAL_INCLUDES}?${CMAKE_INSTALL_PREFIX}/include)??
  • set(JRTPLIB_LIBS?${JRTPLIB_LIBS}?${JRTPLIB_LINK_LIBS})??
  • remove_empty(JRTPLIB_INCDIRS)??
  • list(REMOVE_DUPLICATES?JRTPLIB_INCDIRS)??
  • remove_empty(JRTPLIB_LIBS)??
  • ??
  • foreach(ARG?${JRTPLIB_LIBS})??
  • ????set(JRTPLIB_LIBS_CMAKECONFIG?"${JRTPLIB_LIBS_CMAKECONFIG}?\"${ARG}\"")??
  • endforeach()??
  • foreach(ARG?${JRTPLIB_INCDIRS})??
  • ????set(JRTPLIB_INCDIRS_CMAKECONFIG?"${JRTPLIB_INCDIRS_CMAKECONFIG}?\"${ARG}\"")??
  • endforeach()??
  • ??
  • configure_file("${PROJECT_SOURCE_DIR}/cmake/JRTPLIBConfig.cmake.in"?"${PROJECT_BINARY_DIR}/cmake/JRTPLIBConfig.cmake")??
  • install(FILES?"${PROJECT_BINARY_DIR}/cmake/JRTPLIBConfig.cmake"?DESTINATION?${LIBRARY_INSTALL_DIR}/cmake/JRTPLIB)??
  • ??
  • if?(UNIX)??
  • ????foreach(ARG?${JRTPLIB_LIBS})??
  • ????????set(JRTPLIB_LIBS_PKGCONFIG?"${JRTPLIB_LIBS_PKGCONFIG}?${ARG}")??
  • ????endforeach()??
  • ????foreach(ARG?${JRTPLIB_INCDIRS})??
  • ????????set(JRTPLIB_INCDIRS_PKGCONFIG?"${JRTPLIB_INCDIRS_PKGCONFIG}?-I${ARG}")??
  • ????endforeach()??
  • ??
  • ????configure_file(${PROJECT_SOURCE_DIR}/pkgconfig/jrtplib.pc.in?${PROJECT_BINARY_DIR}/pkgconfig/jrtplib.pc)??
  • ????install(FILES?${PROJECT_BINARY_DIR}/pkgconfig/jrtplib.pc?DESTINATION?${LIBRARY_INSTALL_DIR}/pkgconfig)??
  • endif?(UNIX)??
  • cmake CMakeLists.txt

    make

    make install



    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的linux下编译jrtplib-3.9.1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。