파이에서 구동되는 OpenDDS 어플은 OpenDDS 본체와 동일하게 크로스 컴파일 해야 한다.
물론, 관련 라이브러리들을 죄다 파이에 올리면 컴파일 못 할 이유는 없지만, 효율이 너무 떨어진다[각주:1].
OpenDDS를 사용하는 어플의 빌드를 위해서는 MPC 또는 CMake를 사용할 수 있다.
난 CMake를 선택했다.
sudo apt install cmake
통상적인 내용 외에 cmake 스크립트에 추가적으로 적어줘야 할 내용들은 아래와 같다.
추가해야 할 라이브러리 등은 Developer's Guide에 잘 나와있기는 개뿔...
그냥 열심히 잘 찾아야 한다.
이걸 찾는 건 그냥 윈도우 환경에서 Visual Studio로 컴파일하며 찾는 게 편한 것 같다[각주:3].
이렇게 만들어본 CMakeLists.txt 파일은 아래와 같다.
cmake_minimum_required( VERSION 3.0 )
project("RPI test app cpp")
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_VERSION 1)
SET(CMAKE_LIBRARY_ARCHITECTURE arm-linux-gnueabihf)
set(CMAKE_CXX_COMPILER /opt/cross-pi-gcc/bin/arm-none-linux-gnueabihf-g++)
set(CMAKE_BUILD_TYPE Release)
set(SOURCE_FILES RPITMPC.cpp RPITMPS.cpp RPITMPTypeSupportC.cpp RPITMPTypeSupportImpl.cpp RPITMPTypeSupportS.cpp RPITMP_RPI.cpp UI2RPDataReaderListenerImpl.cpp)
set(CMAKE_PREFIX_PATH /usr/lib /usr/local/lib)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -Wno-psabi")
set(DDS_ROOT /home/pi/OpenDDS-3.20/build/target)
set(ACE_ROOT ${DDS_ROOT}/ACE_wrappers)
set(MPC_ROOT ${ACE_ROOT}/MPC)
set(TAO_ROOT ${ACE_ROOT}/TAO)
set(LD_LIBRARY_PATH
${LD_LIBRARY_PATH}
${ACE_ROOT}/lib
${DDS_ROOT}/lib)
set(INCLUDE_DIR
${ACE_ROOT}
${TAO_ROOT}
${DDS_ROOT}
${TAO_ROOT}/orbsvcs)
set(OPENDDS_LIB
ACE
TAO
TAO_AnyTypeCode
TAO_PortableServer
TAO_CodecFactory
TAO_PI
TAO_BiDirGIOP
OpenDDS_Dcps
OpenDDS_InfoRepoDiscovery
OpenDDS_Tcp
TAO_Svc_Utils)
include_directories(
include
${INCLUDE_DIR})
link_directories(
/opt/cross-pi-gcc/arm-none-linux-gnueabihf/libc/lib
${LD_LIBRARY_PATH})
add_executable(RPI ${SOURCE_FILES})
target_link_libraries(RPI ${OPENDDS_LIB})
드디어! 윈도우와! 라즈베리 파이 간에! OpenDDS! 통신! 성공!
라즈베리 파이에서 OpenDDS 구동 삽질기 #2 (0) | 2022.07.24 |
---|---|
라즈베리 파이에서 OpenDDS 구동 삽질기 #1 (0) | 2022.07.24 |
KODI에서 SFTP 사용하기 (0) | 2022.02.08 |
LibreELEC (Matrix) 10.0.0 업그레이드 (0) | 2021.09.06 |
라즈베리파이 4 히트싱크 케이스 설치 (1) | 2020.02.22 |