ChatGPT4 suggest using --with-sysroot and using the correct -I flags for pointing to the correct include directories eg:
./configure --host=arm-linux-gnueabihf --with-sysroot=/path/to/arm/sysroot This is not a specific issue with zeromq but skills about using the tools of the trade. Good luck, Edwin On Tue, 31 Oct 2023 at 04:32, Venkat Krishna via zeromq-dev < [email protected]> wrote: > Hi, > > I'm trying to cross compile the libzmq for my arm stm32 unit and I'm > facing some issues. I'm a noob so I don't know if I'm missing something. > Any help is greatly appreciated! > > I'm using Ubuntu 22.04 as my host, and I installed the > `gcc-arm-linux-gnueabi, gcc-arm-linux-gnueabihf, g++-arm-linux-gnueabi, > g++-arm-linux-gnueabihf packages and also the STM's sdk that comes with a > set of cross compilers. > > Here's what I've tried: > > 1. » ./configure --host=arm-none-linux-gnueabi > CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ > 1. When I run `make check after this, I get the following errors. > Making check in doc > make[1]: Entering directory > '/home/venkatkrishna/Documents/libzmq/doc' > make[1]: Nothing to be done for 'check'. > make[1]: Leaving directory > '/home/venkatkrishna/Documents/libzmq/doc' > make[1]: Entering directory '/home/venkatkrishna/Documents/libzmq' > CXX src/libzmq_la-address.lo > In file included from /usr/arm-linux-gnueabihf/include/stdio.h:430, > from src/../include/zmq.h:32, > from src/precompiled.hpp:30, > from src/address.cpp:3: > /usr/include/x86_64-linux-gnu/bits/floatn.h:74:70: error: unknown > machine mode ‘__TC__’ > 74 | typedef _Complex float __cfloat128 __attribute__ ((__mode__ > (__TC__))); > | > ^ > /usr/include/x86_64-linux-gnu/bits/floatn.h:86:9: error: > ‘__float128’ does not name a type; did you mean ‘__cfloat128’? > 86 | typedef __float128 _Float128; > | ^~~~~~~~~~ > | __cfloat128 > In file included from > /usr/arm-linux-gnueabihf/include/c++/11/cwchar:44, > from > /usr/arm-linux-gnueabihf/include/c++/11/bits/postypes.h:40, > from > /usr/arm-linux-gnueabihf/include/c++/11/bits/char_traits.h:40, > from > /usr/arm-linux-gnueabihf/include/c++/11/string:40, > from src/address.hpp:8, > from src/address.cpp:5: > /usr/arm-linux-gnueabihf/include/wchar.h:407:8: error: ‘_Float128’ > does not name a type; did you mean ‘_Float32x’? > 407 | extern _Float128 wcstof128 (const wchar_t *__restrict > __nptr, > | ^~~~~~~~~ > | _Float32x > /usr/arm-linux-gnueabihf/include/wchar.h:524:8: error: ‘_Float128’ > does not name a type; did you mean ‘_Float32x’? > 524 | extern _Float128 wcstof128_l (const wchar_t *__restrict > __nptr, > | ^~~~~~~~~ > | _Float32x > In file included from > /usr/arm-linux-gnueabihf/include/c++/11/cstdlib:75, > from > /usr/arm-linux-gnueabihf/include/c++/11/ext/string_conversions.h:41, > from > /usr/arm-linux-gnueabihf/include/c++/11/bits/basic_string.h:6608, > from > /usr/arm-linux-gnueabihf/include/c++/11/string:55, > from src/address.hpp:8, > from src/address.cpp:5: > /usr/arm-linux-gnueabihf/include/stdlib.h:153:8: error: ‘_Float128’ > does not name a type; did you mean ‘_Float32x’? > 153 | extern _Float128 strtof128 (const char *__restrict __nptr, > | ^~~~~~~~~ > | _Float32x > /usr/arm-linux-gnueabihf/include/stdlib.h:246:25: error: > ‘_Float128’ has not been declared > 246 | _Float128 __f) > | ^~~~~~~~~ > /usr/arm-linux-gnueabihf/include/stdlib.h:331:8: error: ‘_Float128’ > does not name a type; did you mean ‘_Float32x’? > 331 | extern _Float128 strtof128_l (const char *__restrict __nptr, > | ^~~~~~~~~ > | _Float32x > make[1]: *** [Makefile:5481: src/libzmq_la-address.lo] Error 1 > make[1]: Leaving directory '/home/venkatkrishna/Documents/libzmq' > make: *** [Makefile:8436: check-recursive] Error 1 > 2. > I don't understand why it would pick the x86's include. > > 2. And then I read a thread on cross compiling for ARM for iPhone and > it gave me an idea to use the STM's sdk compilers. > 1. a. I ran again the ./configure with the following flags - compilers > and sysroot pointing to the STM sdk > ./configure --host=arm-ostl-linux-gnueabi > > CC=/home/venkatkrishna/Documents/STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi > arm-ostl-linux-gnueabi-gcc > > > CXX=/home/venkatkrishna/Documents/STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-g++ > CFLAGS="-O --sysroot > > /home/venkatkrishna/Documents/STM/sdk/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi > " > CXXFLAGS="-O --sysroot > > /home/venkatkrishna/Documents/STM/sdk/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi > " > > > LD=/home/venkatkrishna/Documents/STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-ld > LDFLAGS="--sysroot > > /home/venkatkrishna/Documents/STM/sdk/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi > " > > > AR=/home/venkatkrishna/Documents/STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-ar > > > AS=/home/venkatkrishna/Documents/STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-as > > > STRIP=/home/venkatkrishna/Documents/STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-strip > > > RANLIB=/home/venkatkrishna/Documents/STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-ranlib > > b. When I run make check, I get an error saying the compiler > doesn't work. > c. I tried using the compiler to compile a normal file and it fails > with the message below. > > /STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/libexec/arm-ostl-linux-gnueabi/gcc/arm-ostl-linux-gnueabi/12.2.0/ld: > cannot find crt1.o: No such file or directory > > /STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/libexec/arm-ostl-linux-gnueabi/gcc/arm-ostl-linux-gnueabi/12.2.0/ld: > cannot find crti.o: No such file or directory > > /STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/libexec/arm-ostl-linux-gnueabi/gcc/arm-ostl-linux-gnueabi/12.2.0/ld: > cannot find crtbegin.o: No such file or directory > > /STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/libexec/arm-ostl-linux-gnueabi/gcc/arm-ostl-linux-gnueabi/12.2.0/ld: > cannot find -lgcc: No such file or directory > > /STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/libexec/arm-ostl-linux-gnueabi/gcc/arm-ostl-linux-gnueabi/12.2.0/ld: > cannot find -lgcc_s: No such file or directory > > /STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/libexec/arm-ostl-linux-gnueabi/gcc/arm-ostl-linux-gnueabi/12.2.0/ld: > cannot find -lc: No such file or directory > > /STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/libexec/arm-ostl-linux-gnueabi/gcc/arm-ostl-linux-gnueabi/12.2.0/ld: > cannot find -lgcc: No such file or directory > > /STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/libexec/arm-ostl-linux-gnueabi/gcc/arm-ostl-linux-gnueabi/12.2.0/ld: > cannot find -lgcc_s: No such file or directory > > /STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/libexec/arm-ostl-linux-gnueabi/gcc/arm-ostl-linux-gnueabi/12.2.0/ld: > cannot find crtend.o: No such file or directory > > /STM/sdk/sysroots/x86_64-ostl_sdk-linux/usr/libexec/arm-ostl-linux-gnueabi/gcc/arm-ostl-linux-gnueabi/12.2.0/ld: > cannot find crtn.o: No such file or directory > > Again, I don't understand this because under my sdk usr folder there are > two folders lib and libexec. The lib folder contains these object files but > the ld is complaining that it can't find. > > Any help is greatly appreciated. > > ------------------------------ > This message and any attachments are confidential and intended solely for > the addressees. Any unauthorized use or disclosure, either whole or > partial, is prohibited. E-mails are susceptible to alteration. InTimeTec > shall not be liable for the message if altered, changed or falsified. If > you are not the intended recipient of this message, please delete it and > notify the sender. > _______________________________________________ > zeromq-dev mailing list > [email protected] > https://lists.zeromq.org/mailman/listinfo/zeromq-dev >
_______________________________________________ zeromq-dev mailing list [email protected] https://lists.zeromq.org/mailman/listinfo/zeromq-dev
