HummingBoard-Pro(アームプロセッサ)用のソフトウェアをクロスコンパイルしました。クロスコンパイルされたソフトウェアが間違った出力を生成する
ソフトウェアは、lcmプロトコルを使用してデータを受信します。 クロスコンパイルされたソフトウェアを使用すると、アプリケーションによって受信されたデータは無効になります。オンボードのコンパイル済みソフトウェアを使用するとすべて正常に動作します。
-ソフトウェアはまったく同じです! -I cmakeと特定のアームツールチェーンを使用してクロスコンパイルします。
クロスコンパイルSWの出力例:
first value 5.73599e+107
second value 5.73599e+107
third value 5.73599e+107
ボードコンパイルSW上の出力例:
first value 1
second value 2
third value 3
注:おそらく何かがうまくいかないので、それは私の最初のクロスコンパイルの試みだが、私は避難所に」本当に何について考えていますか?
CMakelistsは
cmake_minimum_required(VERSION 3.1)
set(main_project_dir ${CMAKE_CURRENT_SOURCE_DIR})
set(external_dir ${main_project_dir}/external)
set(external_lcm_dir ${external_dir}/lcm_dir)
set(external_lcm ${external_lcm_dir}/lcm)
set(external_lcm_build ${external_lcm}/build)
set(external_lcm_gen_exe /usr/local/bin/lcm-gen)
set(lcm_input_file ${main_project_dir}/lcm_format_files/lcm_input_files/indrive.sensors.vanet.lcm)
set(lcm_libraries ${main_project_dir}/external/lcm_dir/lcm/build/lcm)
set(lmc_libraries_header ${main_project_dir}/external/lcm_dir/lcm/)
set(lcm_autogenerated_dir ${main_project_dir}/build/lcm_autogenerated_classes)
add_custom_target(
generate-lcm
COMMAND ${external_lcm_gen_exe} -x ${lcm_input_file} --cpp-hpath ${lcm_autogenerated_dir}
COMMENT "=================== Generating lcm files..."
)
add_subdirectory(testSender)
add_subdirectory(testReceiver)
ツールチェインFILE
SET (CMAKE_SYSTEM_NAME Linux)
SET (CMAKE_SYSTEM_VERSION 1)
SET (CMAKE_SYSTEM_PROCESSOR arm)
INCLUDE_DIRECTORIES(/usr/hummingboard/usr/include /usr/hummingboard/include /usr/hummingboard/usr/include/arm-linux-gnueabihf/)
LINK_DIRECTORIES(/usr/hummingboard/usr/lib /usr/hummingboard/lib /usr/hummingboard/lib/arm-linux-gnueabihf)
SET(CMAKE_PREFIX_PATH /usr/arm-linux-gnueabihf/lib/
/usr/hummingboard/
/usr/hummingboard/lib/arm-linux-gnueabihf/
/usr/hummingboard/usr
/usr/hummingboard/usr/lib/arm-linux-gnueabihf/
)
SET (CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabi-gcc)
SET (CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabi-g++)
SET (CMAKE_FIND_ROOT_PATH /usr/hummingboard/ /usr/hummingboard/usr)
SET (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
SET (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
我々は唯一の推測することができます。おそらく、このスクリプトは* target *ものの代わりにいくつかの* host *パラメータを取ります。 – Tsyvarev
値「5.73599e + 107」は「無限」を意味する「0x7f800000」です(https://stackoverflow.com/questions/35022082/assign-infinity-to-float)。野生の推測では、浮動小数点の設定が間違っているということです。 [verbose makefiles](https://stackoverflow.com/questions/2670121/using-cmake-with-gnu-make-how-can-i)を使用して、両方のビルド間のコンパイラコマンドラインを比較してください(動作対非動作)。 -see-the-exact-commands)を実行します。 – Florian
私は要求されたファイルを追加しました – Franconet