I am facing an issue while cross-compiling an awsclient application. My build environment is Ubuntu 20.04 and Buildroot running from Docker Desktop for Windows. I am using cmake tool. But when I do make
I am getting below erros:
In file included from /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h:9:0,
from /usr/include/glib-2.0/glib/gtypes.h:32,
from /usr/include/glib-2.0/glib/galloca.h:32,
from /usr/include/glib-2.0/glib.h:30,
from /usr/include/glib-2.0/gobject/gbinding.h:28,
from /usr/include/glib-2.0/glib-object.h:22,
from /usr/include/glib-2.0/gio/gioenums.h:28,
from /usr/include/glib-2.0/gio/giotypes.h:28,
from /usr/include/glib-2.0/gio/gio.h:26,
from /root/br-tcg4/libs/br_pjt/aws-iot-client/src/rauc-installer-gen.h:12,
from /root/br-tcg4/libs/br_pjt/aws-iot-client/src/rauc-installer-gen.c:13:
/usr/include/glib-2.0/glib/gtypes.h: In function '_GLIB_CHECKED_ADD_U64':
/usr/include/glib-2.0/glib/gmacros.h:738:31: error: static assertion failed: "Expression evaluates to false"
#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
^
/usr/include/glib-2.0/glib/gtypes.h:463:3: note: in expansion of macro 'G_STATIC_ASSERT'
G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64));
^~~~~~~~~~~~~~~
make[2]: *** [src/CMakeFiles/awsclient.dir/build.make:150: src/CMakeFiles/awsclient.dir /rauc-installer-gen.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:554: src/CMakeFiles/awsclient.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
One thing I noticed while doing cmake
before make
is cmake
generated some warnings about linker.
CMake Warning at src/CMakeLists.txt:17 (add_executable):
Cannot generate a safe linker search path for target awsclient because
files in some directories may conflict with libraries in implicit
directories:
link library [libcurl.so] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/br-tcg4/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux- gnueabihf/libc/usr/lib
link library [libssl.so] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/br-tcg4/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux- gnueabihf/libc/usr/lib
link library [libcrypto.so] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/br-tcg4/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux- gnueabihf/libc/usr/lib
Some of these libraries may not be found correctly.
The dir /root/br-tcg4/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf
is the location of the toolchain I am using. I am not sure if these warnings are reason for above issue.
Update I
The output of make VERBOSE=1
is:
/usr/bin/cmake -S/root/br-tcg4/libs/br_pjt/aws-iot-client -B/root/br-tcg4/libs/br_pjt/aws-iot-client/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /root/br-tcg4/libs/br_pjt/aws-iot-client/build/CMakeFiles /root/br-tcg4/libs/br_pjt/aws-iot-client/build/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make -f lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/build.make lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/depend
make[2]: Entering directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
cd /root/br-tcg4/libs/br_pjt/aws-iot-client/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /root/br-tcg4/libs/br_pjt/aws-iot-client /root/br-tcg4/libs/br_pjt/aws-iot-client/lib/aws-iot-device-sdk-cpp /root/br-tcg4/libs/br_pjt/aws-iot-client/build /root/br-tcg4/libs/br_pjt/aws-iot-client/build/lib/aws-iot-device-sdk-cpp /root/br-tcg4/libs/br_pjt/aws-iot-client/build/lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make -f lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/build.make lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/build
make[2]: Entering directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make[2]: Nothing to be done for 'lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/build'.
make[2]: Leaving directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
[ 36%] Built target aws-iot-sdk-cpp
make -f lib/aws-iot-device-sdk-cpp/samples/PubSub/CMakeFiles/pub-sub-sample.dir/build.make lib/aws-iot-device-sdk-cpp/samples/PubSub/CMakeFiles/pub-sub-sample.dir/depend
make[2]: Entering directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
cd /root/br-tcg4/libs/br_pjt/aws-iot-client/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /root/br-tcg4/libs/br_pjt/aws-iot-client /root/br-tcg4/libs/br_pjt/aws-iot-client/lib/aws-iot-device-sdk-cpp/samples/PubSub /root/br-tcg4/libs/br_pjt/aws-iot-client/build /root/br-tcg4/libs/br_pjt/aws-iot-client/build/lib/aws-iot-device-sdk-cpp/samples/PubSub /root/br-tcg4/libs/br_pjt/aws-iot-client/build/lib/aws-iot-device-sdk-cpp/samples/PubSub/CMakeFiles/pub-sub-sample.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make -f lib/aws-iot-device-sdk-cpp/samples/PubSub/CMakeFiles/pub-sub-sample.dir/build.make lib/aws-iot-device-sdk-cpp/samples/PubSub/CMakeFiles/pub-sub-sample.dir/build
make[2]: Entering directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make[2]: Nothing to be done for 'lib/aws-iot-device-sdk-cpp/samples/PubSub/CMakeFiles/pub-sub-sample.dir/build'.
make[2]: Leaving directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
[ 42%] Built target pub-sub-sample
make -f lib/aws-iot-device-sdk-cpp/samples/ShadowDelta/CMakeFiles/shadow-delta-sample.dir/build.make lib/aws-iot-device-sdk-cpp/samples/ShadowDelta/CMakeFiles/shadow-delta-sample.dir/depend
make[2]: Entering directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
cd /root/br-tcg4/libs/br_pjt/aws-iot-client/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /root/br-tcg4/libs/br_pjt/aws-iot-client /root/br-tcg4/libs/br_pjt/aws-iot-client/lib/aws-iot-device-sdk-cpp/samples/ShadowDelta /root/br-tcg4/libs/br_pjt/aws-iot-client/build /root/br-tcg4/libs/br_pjt/aws-iot-client/build/lib/aws-iot-device-sdk-cpp/samples/ShadowDelta /root/br-tcg4/libs/br_pjt/aws-iot-client/build/lib/aws-iot-device-sdk-cpp/samples/ShadowDelta/CMakeFiles/shadow-delta-sample.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make -f lib/aws-iot-device-sdk-cpp/samples/ShadowDelta/CMakeFiles/shadow-delta-sample.dir/build.make lib/aws-iot-device-sdk-cpp/samples/ShadowDelta/CMakeFiles/shadow-delta-sample.dir/build
make[2]: Entering directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make[2]: Nothing to be done for 'lib/aws-iot-device-sdk-cpp/samples/ShadowDelta/CMakeFiles/shadow-delta-sample.dir/build'.
make[2]: Leaving directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
[ 47%] Built target shadow-delta-sample
make -f lib/aws-iot-device-sdk-cpp/samples/Jobs/CMakeFiles/jobs-sample.dir/build.make lib/aws-iot-device-sdk-cpp/samples/Jobs/CMakeFiles/jobs-sample.dir/depend
make[2]: Entering directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
cd /root/br-tcg4/libs/br_pjt/aws-iot-client/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /root/br-tcg4/libs/br_pjt/aws-iot-client /root/br-tcg4/libs/br_pjt/aws-iot-client/lib/aws-iot-device-sdk-cpp/samples/Jobs /root/br-tcg4/libs/br_pjt/aws-iot-client/build /root/br-tcg4/libs/br_pjt/aws-iot-client/build/lib/aws-iot-device-sdk-cpp/samples/Jobs /root/br-tcg4/libs/br_pjt/aws-iot-client/build/lib/aws-iot-device-sdk-cpp/samples/Jobs/CMakeFiles/jobs-sample.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make -f lib/aws-iot-device-sdk-cpp/samples/Jobs/CMakeFiles/jobs-sample.dir/build.make lib/aws-iot-device-sdk-cpp/samples/Jobs/CMakeFiles/jobs-sample.dir/build
make[2]: Entering directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make[2]: Nothing to be done for 'lib/aws-iot-device-sdk-cpp/samples/Jobs/CMakeFiles/jobs-sample.dir/build'.
make[2]: Leaving directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
[ 53%] Built target jobs-sample
make -f lib/aws-iot-device-sdk-cpp/samples/JobsAgent/CMakeFiles/jobs-agent.dir/build.make lib/aws-iot-device-sdk-cpp/samples/JobsAgent/CMakeFiles/jobs-agent.dir/depend
make[2]: Entering directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
cd /root/br-tcg4/libs/br_pjt/aws-iot-client/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /root/br-tcg4/libs/br_pjt/aws-iot-client /root/br-tcg4/libs/br_pjt/aws-iot-client/lib/aws-iot-device-sdk-cpp/samples/JobsAgent /root/br-tcg4/libs/br_pjt/aws-iot-client/build /root/br-tcg4/libs/br_pjt/aws-iot-client/build/lib/aws-iot-device-sdk-cpp/samples/JobsAgent /root/br-tcg4/libs/br_pjt/aws-iot-client/build/lib/aws-iot-device-sdk-cpp/samples/JobsAgent/CMakeFiles/jobs-agent.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make -f lib/aws-iot-device-sdk-cpp/samples/JobsAgent/CMakeFiles/jobs-agent.dir/build.make lib/aws-iot-device-sdk-cpp/samples/JobsAgent/CMakeFiles/jobs-agent.dir/build
make[2]: Entering directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make[2]: Nothing to be done for 'lib/aws-iot-device-sdk-cpp/samples/JobsAgent/CMakeFiles/jobs-agent.dir/build'.
make[2]: Leaving directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
[ 60%] Built target jobs-agent
make -f src/CMakeFiles/awsclient.dir/build.make src/CMakeFiles/awsclient.dir/depend
make[2]: Entering directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
cd /root/br-tcg4/libs/br_pjt/aws-iot-client/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /root/br-tcg4/libs/br_pjt/aws-iot-client /root/br-tcg4/libs/br_pjt/aws-iot-client/src /root/br-tcg4/libs/br_pjt/aws-iot-client/build /root/br-tcg4/libs/br_pjt/aws-iot-client/build/src /root/br-tcg4/libs/br_pjt/aws-iot-client/build/src/CMakeFiles/awsclient.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make -f src/CMakeFiles/awsclient.dir/build.make src/CMakeFiles/awsclient.dir/build
make[2]: Entering directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
[ 61%] Building C object src/CMakeFiles/awsclient.dir/rauc-installer-gen.c.o
cd /root/br-tcg4/libs/br_pjt/aws-iot-client/build/src && /root/br-tcg4/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -DOPENSSL_LOAD_CONF -I/root/br-tcg4/libs/br_pjt/aws-iot-client/build/third_party/rapidjson/src/include -I/root/br-tcg4/libs/br_pjt/aws-iot-client/lib/aws-iot-device-sdk-cpp/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gio-unix-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/json-glib-1.0 -I/root/br-tcg4/libs/br_pjt/aws-iot-client/lib/aws-iot-device-sdk-cpp/network/OpenSSL -pthread -o CMakeFiles/awsclient.dir/rauc-installer-gen.c.o -c /root/br-tcg4/libs/br_pjt/aws-iot-client/src/rauc-installer-gen.c
In file included from /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h:9:0,
from /usr/include/glib-2.0/glib/gtypes.h:32,
from /usr/include/glib-2.0/glib/galloca.h:32,
from /usr/include/glib-2.0/glib.h:30,
from /usr/include/glib-2.0/gobject/gbinding.h:28,
from /usr/include/glib-2.0/glib-object.h:22,
from /usr/include/glib-2.0/gio/gioenums.h:28,
from /usr/include/glib-2.0/gio/giotypes.h:28,
from /usr/include/glib-2.0/gio/gio.h:26,
from /root/br-tcg4/libs/br_pjt/aws-iot-client/src/rauc-installer-gen.h:12,
from /root/br-tcg4/libs/br_pjt/aws-iot-client/src/rauc-installer-gen.c:13:
/usr/include/glib-2.0/glib/gtypes.h: In function '_GLIB_CHECKED_ADD_U64':
/usr/include/glib-2.0/glib/gmacros.h:738:31: error: static assertion failed: "Expression evaluates to false"
#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
^
/usr/include/glib-2.0/glib/gtypes.h:463:3: note: in expansion of macro 'G_STATIC_ASSERT'
G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64));
^~~~~~~~~~~~~~~
make[2]: *** [src/CMakeFiles/awsclient.dir/build.make:150: src/CMakeFiles/awsclient.dir/rauc-installer-gen.c.o] Error 1
make[2]: Leaving directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make[1]: *** [CMakeFiles/Makefile2:554: src/CMakeFiles/awsclient.dir/all] Error 2
make[1]: Leaving directory '/root/br-tcg4/libs/br_pjt/aws-iot-client/build'
make: *** [Makefile:130: all] Error 2
Here is the Toolchain File:
# The OpenSSL paths in the network/CMakeLists.txt needs to be replaced with the path to the cross-compiled OpenSSL library for
# the required paltform
# General CMAKE cross compile settings
SET(CMAKE_SYSTEM_NAME Generic)
SET(CMAKE_SYSTEM_VERSION 1)
# Specify toolchain directory
SET(TOOLCHAIN_DIR /home/toolchain/dir/here/bin)
# Specify cross compilation target
SET(TARGET_CROSS target-here)
# Set compilers
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/${TARGET_CROSS}g++)
# Set linker
SET(CMAKE_LINKER ${TOOLCHAIN_DIR}/${TARGET_CROSS}ld)
# Set compiler flags
SET(CMAKE_CXX_FLAGS ${COMMON_FLAGS} -std=c++11)
# Set archiving tool
SET(CMAKE_AR ${TOOLCHAIN_DIR}/${TARGET_CROSS}ar CACHE FILEPATH "Archiver")
# Set randomizing tool for static libraries
SET(CMAKE_RANLIB ${TOOLCHAIN_DIR}/${TARGET_CROSS}ranlib)
# Set strip tool
SET(CMAKE_STRIP ${TOOLCHAIN_DIR}/${TARGET_CROSS}strip)
# Set objdump tool
SET(CMAKE_OBJDUMP ${TOOLCHAIN_DIR}/${TARGET_CROSS}objdump)
# Set objcopy tool
SET(CMAKE_OBJCOPY ${TOOLCHAIN_DIR}/${TARGET_CROSS}objcopy)
# Set nm tool
SET(CMAKE_NM ${TOOLCHAIN_DIR}/${TARGET_CROSS}nm)
# Set THREADS_PTHREAD_ARG for testing threading
SET(THREADS_PTHREAD_ARG "2" CACHE STRING "Forcibly set by ToolchainFile.cmake." FORCE)
Update II
After following input from @Tsyvarev and @KamilCuk comment, I updated the Toolchain file to fetch binaries and headers from target system(arm) instead of host machine(x86_64). Now cmake
is building files successfully and no warnings are shown. But when I do make
I get below errors:
/opt/poky/3.1.12/sysroots/x86_64-pokysdk-linux/usr/bin/cmake -S/root/sources/aws-iot-client -B/root/sources/aws-iot-client/build --check-build-system CMakeFiles/Makefile.cmake 0
/opt/poky/3.1.12/sysroots/x86_64-pokysdk-linux/usr/bin/cmake -E cmake_progress_start /root/sources/aws-iot-client/build/CMakeFiles /root/sources/aws-iot-client/build/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/root/sources/aws-iot-client/build'
make -f lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/build.make lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/depend
make[2]: Entering directory '/root/sources/aws-iot-client/build'
cd /root/sources/aws-iot-client/build && /opt/poky/3.1.12/sysroots/x86_64-pokysdk-linux/usr/bin/cmake -E cmake_depends "Unix Makefiles" /root/sources/aws-iot-client /root/sources/aws-iot-client/lib/aws-iot-device-sdk-cpp /root/sources/aws-iot-client/build /root/sources/aws-iot-client/build/lib/aws-iot-device-sdk-cpp /root/sources/aws-iot-client/build/lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/root/sources/aws-iot-client/build'
make -f lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/build.make lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/build
make[2]: Entering directory '/root/sources/aws-iot-client/build'
[ 1%] Building CXX object lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/src/Action.cpp.o
cd /root/sources/aws-iot-client/build/lib/aws-iot-device-sdk-cpp && /opt/poky/3.1.12/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi --sysroot=/opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi -DOPENSSL_LOAD_CONF -DSDK_VERSION_STRING=\"1.4.0\" -I/root/sources/aws-iot-client/build/third_party/rapidjson/src/include -I/root/sources/aws-iot-client/lib/aws-iot-device-sdk-cpp/include -O2 -pipe -g -feliminate-unused-debug-types -fPIC -pthread -std=c++11 -o CMakeFiles/aws-iot-sdk-cpp.dir/src/Action.cpp.o -c /root/sources/aws-iot-client/lib/aws-iot-device-sdk-cpp/src/Action.cpp
cc1plus: warning: include location "/usr/include/x86_64-linux-gnu" is unsafe for cross-compilation [-Wpoison-system-directories]
In file included from /opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/wchar.h:30,
from /opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/c++/9.3.0/cwchar:44,
from /opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/c++/9.3.0/bits/postypes.h:40,
from /opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/c++/9.3.0/bits/char_traits.h:40,
from /opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/c++/9.3.0/string:40,
from /root/sources/aws-iot-client/lib/aws-iot-device-sdk-cpp/include/Action.hpp:27,
from /root/sources/aws-iot-client/lib/aws-iot-device-sdk-cpp/src/Action.cpp:26:
/usr/include/x86_64-linux-gnu/bits/floatn.h:75:70: error: unknown machine mode '__TC__'
75 | typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__TC__)));
| ^
/usr/include/x86_64-linux-gnu/bits/floatn.h:87:9: error: '__float128' does not name a type; did you mean '__cfloat128'?
87 | typedef __float128 _Float128;
| ^~~~~~~~~~
| __cfloat128
In file included from /opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/c++/9.3.0/cwchar:44,
from /opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/c++/9.3.0/bits/postypes.h:40,
from /opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/c++/9.3.0/bits/char_traits.h:40,
from /opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/c++/9.3.0/string:40,
from /root/sources/aws-iot-client/lib/aws-iot-device-sdk-cpp/include/Action.hpp:27,
from /root/sources/aws-iot-client/lib/aws-iot-device-sdk-cpp/src/Action.cpp:26:
/opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/wchar.h:406:8: error: '_Float128' does not name a type; did you mean '_Float32x'?
406 | extern _Float128 wcstof128 (const wchar_t *__restrict __nptr,
| ^~~~~~~~~
| _Float32x
/opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/wchar.h:523:8: error: '_Float128' does not name a type; did you mean '_Float32x'?
523 | extern _Float128 wcstof128_l (const wchar_t *__restrict __nptr,
| ^~~~~~~~~
| _Float32x
In file included from /opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/c++/9.3.0/cstdlib:75,
from /opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/c++/9.3.0/ext/string_conversions.h:41,
from /opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/c++/9.3.0/bits/basic_string.h:6493,
from /opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/c++/9.3.0/string:55,
from /root/sources/aws-iot-client/lib/aws-iot-device-sdk-cpp/include/Action.hpp:27,
from /root/sources/aws-iot-client/lib/aws-iot-device-sdk-cpp/src/Action.cpp:26:
/opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/stdlib.h:152:8: error: '_Float128' does not name a type; did you mean '_Float32x'?
152 | extern _Float128 strtof128 (const char *__restrict __nptr,
| ^~~~~~~~~
| _Float32x
/opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/stdlib.h:245:4: error: '_Float128' has not been declared
245 | _Float128 __f)
| ^~~~~~~~~
/opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/usr/include/stdlib.h:330:8: error: '_Float128' does not name a type; did you mean '_Float32x'?
330 | extern _Float128 strtof128_l (const char *__restrict __nptr,
| ^~~~~~~~~
| _Float32x
make[2]: *** [lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/build.make:63: lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/src/Action.cpp.o] Error 1
make[2]: Leaving directory '/root/sources/aws-iot-client/build'
make[1]: *** [CMakeFiles/Makefile2:338: lib/aws-iot-device-sdk-cpp/CMakeFiles/aws-iot-sdk-cpp.dir/all] Error 2
make[1]: Leaving directory '/root/sources/aws-iot-client/build'
make: *** [Makefile:130: all] Error 2
I am not sure why I still get this warning
cc1plus: warning: include location "/usr/include/x86_64-linux-gnu" is unsafe for cross-compilation [-Wpoison-system-directories]
Update III
After spending some time exploring the project, I understood that Toolchain file used here is OEToolchainConfig.cmake
.
set( CMAKE_SYSTEM_NAME Linux )
set( CMAKE_C_FLAGS $ENV{CFLAGS} CACHE STRING "" FORCE )
set( CMAKE_CXX_FLAGS $ENV{CXXFLAGS} CACHE STRING "" FORCE )
set( CMAKE_ASM_FLAGS ${CMAKE_C_FLAGS} CACHE STRING "" FORCE )
set( CMAKE_LDFLAGS_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE )
set( CMAKE_SYSROOT $ENV{OECORE_TARGET_SYSROOT} )
set( CMAKE_FIND_ROOT_PATH $ENV{OECORE_TARGET_SYSROOT} )
set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY )
set(CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX "$ENV{OE_CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX}")
# Set CMAKE_SYSTEM_PROCESSOR from the sysroot name (assuming processor-distro-os).
if ($ENV{SDKTARGETSYSROOT} MATCHES "/sysroots/([a-zA-Z0-9_-]+)-.+-.+")
set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_MATCH_1})
endif()
# Include the toolchain configuration subscripts
file( GLOB toolchain_config_files "${CMAKE_TOOLCHAIN_FILE}.d/*.cmake" )
foreach(config ${toolchain_config_files})
include(${config})
endforeach()
OECORE_TARGET_SYSROOT is set to echo $OECORE_TARGET_SYSROOT
:
/opt/poky/3.1.12/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi
I am not sure why we need to use this file which is genearted from populate_sdk
by yocto.
Can someone please let me know how to resolve this?
Thanks in advance.
P.S: I am new to Cmake and please let me know if there are any missing info.