C++로 작성되었으며 BeagleBone ARM 기반 보드 용 OpenCV를 사용하여 응용 프로그램을 상호 컴파일하려고합니다. 대상 OS는 Ubuntu 13.10이고, 호스트 OS는 Ubuntu 12.04이며, 네이티브 컴파일러를 사용하여 두 시스템에서 성공적으로 응용 프로그램을 빌드 할 수 있습니다. 그러나, 우분투 저장소에서 크로스 컴파일러를 사용하여 크로스 컴파일하면 표준 헤더 파일 (비트/stdlib-float.h)이 누락되었다는 오류가 발생합니다. 다음은 동일한 문제를 보여주는 작은 예제입니다 (arm_root 디렉토리에 대상 환경이 있음).OpenCV를 사용하여 ARM 용 cmake와 크로스 컴파일
SRC/cross.cpp :
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat m(10, 10, CV_8UC1);
return 0;
}
CMakeLists.txt :
cmake_minimum_required(VERSION 2.6)
find_package(OpenCV REQUIRED)
add_executable(cross src/cross.cpp)
target_link_libraries(cross ${OpenCV_LIBS})
arm_toolchain.cmake (아이디어는 호스트의 크로스 컴파일러 환경에서 표준 C++ 라이브러리에 응용 프로그램을 연결하는 것입니다, 대상 환경의 OpenCV에 연결하십시오. 올바른 선택인지는 확실하지 않습니다.) :
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabihf-g++)
set(CMAKE_FIND_ROOT_PATH /usr/arm-linux-gnueabihf /home/alex/arm_root)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
cmake -DCMAKE_TOOLCHAIN_FILE = ../arm_toolchain.cmake .. & & 메이크업 :
이[100%] Building CXX object CMakeFiles/cross.dir/src/cross.cpp.o
In file included from /home/alex/arm_root/usr/include/opencv2/core/types_c.h:56:0,
from /home/alex/arm_root/usr/include/opencv2/core/core_c.h:47,
from /home/alex/arm_root/usr/include/opencv2/opencv.hpp:46,
from /home/alex/sandbox/cmake/cross/src/cross.cpp:1:
/home/alex/arm_root/usr/include/stdlib.h:951:31: fatal error: bits/stdlib-float.h: No such file or directory
compilation terminated.
make[2]: *** [CMakeFiles/cross.dir/src/cross.cpp.o] Error 1
make[1]: *** [CMakeFiles/cross.dir/all] Error 2
make: *** [all] Error 2
당신이 다른 방법으로 [Buildroot] (http://buildroot.uclibc.org/) 시도? 툴체인, 적절한 툴체인 파일 등을 처리 할 것입니다. – yegorich
동일한 문제가 있습니다. 어떻게 해결 될 수 있습니까? – ransh
기록 용입니다. 나는 그 문제를 해결하지 못했고, 네이티브 컴파일러를 사용하여 보드 자체에서 내 프로그램을 컴파일하기로 결정했습니다. 제 경우에는 시간이 그렇게 중요하지 않았습니다. – Student4K