TEUS.me

 
 

파이에서 구동되는 OpenDDS 어플은 OpenDDS 본체와 동일하게 크로스 컴파일 해야 한다.

물론, 관련 라이브러리들을 죄다 파이에 올리면 컴파일 못 할 이유는 없지만, 효율이 너무 떨어진다[각주:1].

 

OpenDDS를 사용하는 어플의 빌드를 위해서는 MPC 또는 CMake를 사용할 수 있다.

 

 

CMake를 선택했다.

 

sudo apt install cmake

 

통상적인 내용 외에 cmake 스크립트에 추가적으로 적어줘야 할 내용들은 아래와 같다.

- 컴파일러(크로스 컴파일러)

- 컴파일 옵션에 -Wno-pasbi 추가[각주:2]

- OpenDDS 관련 디렉토리

- OpenDDS 라이브러리

 

추가해야 할 라이브러리 등은 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! 통신! 성공!

 

 

 

  1. 컴파일 시간도 오래 걸리지만, 파이에서 사용하는 마이크로SD의 용량의 압박도 무시할 수 없음 [본문으로]
  2. 이걸 추가해야 오류 하나가 발생하지 않음 [본문으로]
  3. 동일한 코드를 VS 환경에서 먼저 돌려본 뒤에 라즈베리 파이 용으로 컴파일했기 때문에 가능했음 [본문으로]

공유하기

facebook twitter kakaoTalk kakaostory naver band

댓글

비밀글모드