【发布时间】:2022-01-07 03:53:08
【问题描述】:
我是手臂构造的初学者。 我想为 armel 平台构建此代码。 我有一个代码:
#include <boost/container/flat_map.hpp>
#include <boost/container/flat_set.hpp>
#include <nlohmann/json.hpp>
int main()
{
return 0;
}
我还有 Cmake 文件:
cmake_minimum_required(VERSION 2.8.10 FATAL_ERROR)
project(test CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_COMPILER arm-linux-gnueabi-g++-10)
set(SRC_FILES test.cpp)
add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)
add_definitions(-DBOOST_SYSTEM_NO_DEPRECATED)
add_definitions(-DBOOST_ALL_NO_LIB)
add_definitions(-DBOOST_NO_RTTI)
add_definitions(-DBOOST_NO_TYPEID)
add_definitions(-DBOOST_ASIO_DISABLE_THREADS)
add_executable(${PROJECT_NAME} ${SRC_FILES})
我将 nlohmann 库安装到:
/usr/local/include/nlohmann/json.hpp
在我生成make和make之后:
/home/test-machine/project-dir/test/test.cpp:3:10: fatal error: nlohmann/json.hpp: No such file or directory
3 | #include <nlohmann/json.hpp>
| ^~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/test.dir/build.make:82: CMakeFiles/test.dir/test.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:95: CMakeFiles/test.dir/all] Error 2
make: *** [Makefile:103: all] Error 2
为什么我有这个错误。请帮帮我!!!
【问题讨论】:
-
非原生编译器一般默认不使用系统包含路径,可能需要指定
/usr/local/include作为包含目录 -
您可以通过使用命令“include_directories(/usr/local/include)”来做到这一点:cmake.org/cmake/help/latest/command/include_directories.html
-
谢谢!我在真实代码上对其进行了测试,但我对 ld 有很多注意事项。我有这样的通知
/usr/lib/gcc-cross/arm-linux-gnueabi/10/../../../../arm-linux-gnueabi/bin/ld: CMakeFiles/power-control.dir/src/power-control.cpp.o: in function `sdbusplus::bus::bus::process_discard()': power-control.cpp:(.text._ZN9sdbusplus3bus3bus15process_discardEv[_ZN9sdbusplus3bus3bus15process_discardEv]+0x98): undefined reference to `sdbusplus::exception::SdBusError::SdBusError(int, char const*, sdbusplus::SdBusInterface*)make 后没有 exec 文件。
标签: c++ linux cmake arm cross-compiling