Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cross compile for aarch64 #101

Open
bhstalel opened this issue Oct 26, 2020 · 2 comments
Open

Cross compile for aarch64 #101

bhstalel opened this issue Oct 26, 2020 · 2 comments

Comments

@bhstalel
Copy link

Hi,
I want to cross compile bundles to aarch64 architecture because I'm working on a custom board based on IMX8MMini CPU.
I'm working on Yocto, and I already used your Yocto layer for that, and it is working perfectly.
Now I'm developing custom bundles, and I don't want to waste time compiling macchina again for one bundle.
I want to cross compile the bundle directly and send it to the board.
I already extracted an SDK for the cross compilation with populate_sdk

But when I set the environment of the SDK, and source env.sh
I try to make the bundle, and I'm stuck with this error:

/home/talel/Documents/macchina.io/platform/Foundation/include/Poco/Alignment.h:21:10: fatal error: type_traits: No such file or directory
   21 | #include <type_traits>

I also noticed that macchina is not compiling for my architecture even with the SDK environment:
Here is the whole output:

** Compiling src/BundleActivator.cpp (debug, shared)
aarch64-poky-linux-g++ -Iinclude -I/home/talel/Documents/macchina.io/platform/CppUnit/include -I/home/talel/Documents/macchina.io/platform/Foundation/include -I/home/talel/Documents/macchina.io/platform/XML/include -I/home/talel/Documents/macchina.io/platform/JSON/include -I/home/talel/Documents/macchina.io/platform/Util/include -I/home/talel/Documents/macchina.io/platform/Net/include -I/home/talel/Documents/macchina.io/platform/Crypto/include -I/home/talel/Documents/macchina.io/platform/NetSSL_OpenSSL/include -I/home/talel/Documents/macchina.io/platform/Data/include -I/home/talel/Documents/macchina.io/platform/Data/SQLite/include -I/home/talel/Documents/macchina.io/platform/Zip/include -I/home/talel/Documents/macchina.io/platform/CppParser/include -I/home/talel/Documents/macchina.io/platform/CodeGeneration/include -I/home/talel/Documents/macchina.io/platform/JS/V8/include -I/home/talel/Documents/macchina.io/platform/JS/Core/include -I/home/talel/Documents/macchina.io/platform/JS/Data/include -I/home/talel/Documents/macchina.io/platform/JS/Bridge/include -I/home/talel/Documents/macchina.io/platform/JS/Net/include -I/home/talel/Documents/macchina.io/platform/RemotingNG/include -I/home/talel/Documents/macchina.io/platform/RemotingNG/RemoteGen/include -I/home/talel/Documents/macchina.io/platform/RemotingNG/TCP/include -I/home/talel/Documents/macchina.io/platform/OSP/include -I/home/talel/Documents/macchina.io/platform/OSP/BundleCreator/include -I/home/talel/Documents/macchina.io/platform/OSP/BundleAdmin/include -I/home/talel/Documents/macchina.io/platform/OSP/Web/include -I/home/talel/Documents/macchina.io/platform/OSP/Core/include -I/home/talel/Documents/macchina.io/platform/OSP/Crypto/include -I/home/talel/Documents/macchina.io/platform/OSP/Data/include -I/home/talel/Documents/macchina.io/platform/OSP/Data/SQLite/include -I/home/talel/Documents/macchina.io/platform/OSP/Net/include -I/home/talel/Documents/macchina.io/platform/OSP/NetSSL_OpenSSL/include -I/home/talel/Documents/macchina.io/platform/OSP/SecureWebServer/include -I/home/talel/Documents/macchina.io/platform/OSP/WebServer/include -I/home/talel/Documents/macchina.io/platform/OSP/WebEvent/include -I/home/talel/Documents/macchina.io/platform/OSP/JS/include -I/home/talel/Documents/macchina.io/platform/Geo/include -I/home/talel/Documents/macchina.io/platform/Serial/include -I/home/talel/Documents/macchina.io/platform/Redis/include -I/home/talel/Documents/macchina.io/platform/WebTunnel/include -I/home/talel/Documents/macchina.io/platform/JWT/include   -Wall -Wno-sign-compare -DPOCO_BUILD_HOST='"'sofia'"' -DPOCO_TARGET_OSNAME='"'Linux'"' **-DPOCO_TARGET_OSARCH='"'x86_64'"'**  -D_XOPEN_SOURCE=600 -D_REENTRANT -D_THREAD_SAFE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DPOCO_HAVE_FD_EPOLL  -g -D_DEBUG -fPIC -c src/BundleActivator.cpp -o /home/talel/Documents/macchina.io/samples/HelloBundle/obj/Linux/x86_64/debug_shared/BundleActivator.o
In file included from /home/talel/Documents/macchina.io/platform/Foundation/include/Poco/Foundation.h:111,
                 from /home/talel/Documents/macchina.io/platform/OSP/include/Poco/OSP/OSP.h:23,
                 from /home/talel/Documents/macchina.io/platform/OSP/include/Poco/OSP/BundleActivator.h:21,
                 from src/BundleActivator.cpp:11:
/home/talel/Documents/macchina.io/platform/Foundation/include/Poco/Alignment.h:21:10: fatal error: type_traits: No such file or directory
   21 | #include <type_traits>
      |          ^~~~~~~~~~~~~
compilation terminated.
/home/talel/Documents/macchina.io/platform/build/rules/compile:56: recipe for target '/home/talel/Documents/macchina.io/samples/HelloBundle/obj/Linux/x86_64/debug_shared/BundleActivator.o' failed
make: *** [/home/talel/Documents/macchina.io/samples/HelloBundle/obj/Linux/x86_64/debug_shared/BundleActivator.o] Error 1

It is using the right toolchain : aarch64-poky-linux-g++
but it is passing the wrong flag: -DPOCO_TARGET_OSARCH='"'x86_64'"'

Is there a way to cross compile for aarch64 ?
Help me.

Thanks, Talel

@JakubNasko
Copy link

Hi Talel, have you been able to solved this issue? I have the same one.

Thanks, Jakub

@obiltschnig
Copy link
Member

You'll need to use the Yocto build configuration and override a few Make variables.

Something like:

$ make POCO_CONFIG=Yocto TOOL=aarch64-poky-linux POCO_TARGET_OSARCH=aarch64

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants