我想在arm平台上交叉编译tiny-dnn(一个c ++ 14项目,https://github.com/tiny-dnn/tiny-dnn)。 所以我安装了g ++ - arm-Linux-gnueabi和gcc-arm-Linux-gnueabi,版本是GCC5.4。 然后我修改了CMakeList以添加一些标志。
option(ARM "Crosscompile with arm" ON)
if(ARM)
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_C_COMPILER arm-linux-gnueabi-gcc)
SET(CMAKE_CXX_COMPILER arm-linux-gnueabi-g++)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
endif()
然后我添加了一些标志:
-march=armv7-a -mtune=cortex-a9 -mfpu=neon
最后,所有标志(一些标志显示两次)是:
-O3 -DNDEBUG -O3 -march=armv7-a -mtune=cortex-a9 -mfpu=neon -static-libstdc++ -static-libgcc -static -pthread -Wall -Wpedantic -Wno-narrowing -Wno-deprecated -Wall -Wpedanitc -Wno-narrowing -Wno-deprecated
最后我遇到了这些错误:
[6%]构建CXX对象 examples / CMakeFiles / example_mnist_train.dir / mnist / train.cpp.o [12%] 链接CXX可执行文件example_mnist_train CMakeFiles / example_mnist_train.dir / mnist / train.cpp.o:在功能上 std :: __ future_base :: _ State_baseV2 :: _ M_set_result(std :: function()>,bool)[克隆 .constprop.5599]':train.cpp :(。text + 0x584):未定义的引用 tostd :: __ atomic_futex_unsigned_base :: _ M_futex_notify_all(无符号 INT *)' CMakeFiles / example_mnist_train.dir / mnist / train.cpp.o:In 功能 std :: __ future_base :: _ State_baseV2 :: _ M_set_result(std :: function()>,bool)[克隆 .constprop.5600]':train.cpp :(。text + 0x67c):未定义的引用 tostd :: __ atomic_futex_unsigned_base :: _ M_futex_notify_all(无符号 INT *)' CMakeFiles / example_mnist_train.dir / mnist / train.cpp.o:In 函数`std :: __ future_base :: _ Result :: ~_Result()':
...等
似乎它无法引用std lib。我错过了什么吗?
BTW,我可以在Nvidia TX1和Raspbian Pi上编译项目,因此该项目应与ARM兼容。