RPi cross-compile C/C++ za MacOS (x86 -> ARM) - Printable Version +- DIY Electronic projects (https://forum.yu3ma.net) +-- Forum: Mikrokontroleri (https://forum.yu3ma.net/forumdisplay.php?fid=52) +--- Forum: ARM (https://forum.yu3ma.net/forumdisplay.php?fid=54) +--- Thread: RPi cross-compile C/C++ za MacOS (x86 -> ARM) (/showthread.php?tid=2007) |
RPi cross-compile C/C++ za MacOS (x86 -> ARM) - mikikg - 10-07-2018 Pozdrav svima, kao sto komplikovani naslov govori radi se o komplikovanoj materiji i nadam se da ce neki iskusan programer da se ukljuci u problematiku. Sve bi to bilo super i sto je najgore radi na Linuxu, ali meni treba za MacOS i tu nastaje problem sto nema oficialnih toolset-ova za tu platformu i svi kazu da se koristi Clang (koji je sam po sebi crooscompiler) sto donekle nije strasno i mozda proradi sa njim ali ne mogu da ga nateram da povuce sve sto treba jer MORA da se bilduje i linkuje na osnovu postojecih biblioteka i kernela od RPi (skine se sa RPi u lokal na case-sensitive FS) ali stalno nesto kuka da mu fali. Intereseuje me samo ovo cudo da proradi, dakle najprostiji HelloWorld.cpp ali da se bilduje na macOS (x86) a da radi na RPi ARM Linux, nista vise ne trazim, samo to PHP Code: #include <iostream> RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - me[R]a - 10-07-2018 Nisam kompententan za ovaj problem ali u zelji da pomognem naletih na ovo : https://www.jaredwolff.com/blog/cross-compiling-on-mac-osx-for-raspberry-pi/ https://www.jaredwolff.com/toolchains/ RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - mikikg - 10-07-2018 Nemam pojma vise nista .... pogubio sam se skroz a kako i nebi ... : ( ovo je komanda za prevodjenje i to kao radi Code: "/Volumes/xtool-build-env/raspbian-sdk/prebuilt/clang+llvm-7.0.0-x86_64-apple-darwin/bin/clang-7" -cc1 -triple armv6kz--linux-gnueabihf -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name hello.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -fuse-init-array -target-cpu arm1176jzf-s -target-feature +strict-align -target-abi aapcs-linux -mfloat-abi hard -fallow-half-arguments-and-returns -dwarf-column-info -debugger-tuning=gdb -target-linker-version 409.12 -v -resource-dir /Volumes/xtool-build-env/raspbian-sdk/prebuilt/clang+llvm-7.0.0-x86_64-apple-darwin/lib/clang/7.0.0 -isysroot /Volumes/xtool-build-env/raspbian-sdk/sysroot -I /Volumes/xtool-build-env/sysroot/usr/include -I /Volumes/xtool-build-env/sysroot/usr/include/arm-linux-gnueabihf/ -internal-isystem /usr/local/include -internal-isystem /Volumes/xtool-build-env/raspbian-sdk/prebuilt/clang+llvm-7.0.0-x86_64-apple-darwin/lib/clang/7.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -fdebug-compilation-dir /Volumes/xtool-build-env -ferror-limit 19 -fmessage-length 214 -fno-signed-char -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /var/folders/5q/httk5zk11yl6hfhrf5rdhbrh0000gn/T/hello-36b108.o -x c++ hello.cpp -faddrsig a ovo za linkovanje koja ne radi i tu je haos ... Code: "/Volumes/xtool-build-env/host/bin/arm-linux-gnueabihf-ld" --sysroot=/Volumes/xtool-build-env/sysroot -X --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-linux-armhf.so.3 -o a.out /Volumes/xtool-build-env/sysroot/usr/lib/arm-linux-gnueabihf/crt1.o /Volumes/xtool-build-env/sysroot/usr/lib/arm-linux-gnueabihf/crti.o /Volumes/xtool-build-env/sysroot/usr/lib/gcc/arm-linux-gnueabihf/6/crtbegin.o -L/Volumes/xtool-build-env/sysroot/usr/lib/gcc/arm-linux-gnueabihf/6 -L/Volumes/xtool-build-env/sysroot/usr/lib/gcc/arm-linux-gnueabihf/6.3.0 -L/Volumes/xtool-build-env/sysroot/usr/lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../lib -L/Volumes/xtool-build-env/sysroot/lib/../lib -L/Volumes/xtool-build-env/sysroot/usr/lib/../lib -L/Volumes/xtool-build-env/sysroot/usr/lib/arm-linux-gnueabihf/../../lib -L/Volumes/xtool-build-env/sysroot/usr/lib/gcc/arm-linux-gnueabihf/6.3.0/../../.. -L/Volumes/xtool-build-env/sysroot/lib -L/Volumes/xtool-build-env/sysroot/usr/lib /var/folders/5q/httk5zk11yl6hfhrf5rdhbrh0000gn/T/hello-36b108.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /Volumes/xtool-build-env/sysroot/usr/lib/gcc/arm-linux-gnueabihf/6/crtend.o crtn.o -L/Volumes/xtool-build-env/sysroot/usr/lib/arm-linux-gnueabihf/ /Volumes/xtool-build-env/sysroot/usr/lib/arm-linux-gnueabihf/crt1.o ma bezi ovo je bolesno .... RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - enaB - 10-07-2018 Jel moze da se pokrene program kompajliran sa Cygwinom na Windowsu, na MacOS? RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - mikikg - 10-07-2018 Pa moze ali to je isti problem kao i kod mene, da bi to preveo i linkovao moras da imas kod sebe kopiju celeog Mac-ovog /usr/lib i /usr/local/lib pa onda includove jer on mora da prevede/linkuje "od kulina bana" sve redom, libc++ pa redom ... Problem kod mene sto su putanje zabrljane, ne mogu to sve da skockam na gomilu i da se povuce tacno sto treba, mesaju mi se toolsetovi, nesto povuce iz /usr/local (odatle nista ne sme da vuce za croos-compile) a nesto pak povuce iz direktorijuma koju sam mu specificirao da mi je toolchain. RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - npejcic - 10-07-2018 Dobrodošao u klub Juče sam se "drndao" sa ARM GCC na Linux/Windows... Nažalost, ne mogu ti konkretno pomoći, ali pitanje je za tebe: da nije možda lakše da instaliraš neku virtelnu mašinu (Virtual Box) i pod njim Linux pa tako? RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - enaB - 10-07-2018 Ako ti nesto pomaze, imam gcc 4.7 koji radi na Windowsu sa Cygwinom, a kompajlira za ARM. RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - mikikg - 10-07-2018 @npejcic To mi radi, VMware pod MacOS sa Linuxom unutra i toolchain za RPi, ludnica ali radi ... A to radi zato sto se toolchain podmetne kao default i kada kazes g++ ili ld on skonta “aha za ARM prevodim” i onda povuce sta treba i mislim da onda “zabrlja” ostalo pa ne mozes tu da prevodis za x86 linux osim ako nemas neki tool za “switchovanje” kao sto radi sponenuti croostool-ng ... RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - mikikg - 10-07-2018 Za Android ARM ima jedna bas takva skripta koja exportuje na gomilu tools-ove i biblioteke za target koji izaberes, posebno se uradi za x86 i poebno za ARM i kada se prevodi sve se lepo povuce odatle a na meni je samo da navedem -L i -I do tog foldera prilikom prevodjenja. To radi lepo na svim OS, aliii ja sam na RPi linuxu ne Android linux ... dodje mi da predjem na Android ... RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - gorankg - 10-07-2018 Ja sam probao i za beaglebone i rpi, linux i win i ništa mi nije radilo. Odlepio sam i batalio. Jeste glupo ali to malo što sam radio sa rpi, radio sam direktno na njemu. Možda probam ponovo, prošlo je dovoljno vremena. Nije ti baš neka pomoć.. jbg RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - mikikg - 10-07-2018 Hehe, svako ko je pokusao da uradi cross-compile za RPi je odlepio na kraju ... : ) RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - enaB - 10-07-2018 Meni radi Na Linuxu, Linaro ima kompajlirane kompajlere koji vec gledaju svoje putanje u okviru instalacije, samo treba da se pozove odgovarajuci izvrsni fajl iz instalacije ili da se doda u PATH. Slicnih stvari ima i ovde, Ubuntu i Debian imaju u repozitorijumima gcc-arm-linux-gnueabihf, i to radi bez problema za BeagleBone, za NanoPi 32 i 64-bitni uglavnom, pa sto ne bi i za RPi RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - mikikg - 10-07-2018 E ako ti proradilo, proradilo i meni. Lepo covek napisao tamo "Before we start anything I recently compiled the toolchain for Rpi3. It will save you a whole bunch of time to download it here rather than go through this proceedure." https://www.jaredwolff.com/toolchains/ Code: /Volumes/xtools/armv8-rpi3-linux-gnueabihf/bin/armv8-rpi3-linux-gnueabihf-c++ test.c -o app -O3 -s I radi na RPi .... e to je vec napredak RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - mikikg - 10-07-2018 BTW: tamo spominju da se ide na ARM-ov sajt i skine toolchain: https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads Medjutim sa njim se opet u isti problem dolazi jer mora da mu se specificira opet sve ovo gore sto sam ja pokusavao i za koji target, i da li ima/nema linux itd. Toolchain koji sam skinuo sa https://www.jaredwolff.com/toolchains/ je to isto samo sto mu je u izvrsne fajlove (gcc, g++, ld i ostalo) ustvari hardcodovana sva podesavanja tacno za RPi Linux ARM. Crosstool-ng sluzi da se ti alati tako prevedu i konfigurisu, ali kada sam nasao vec to gotovo ne zalazim tamo dalje ... RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - me[R]a - 10-07-2018 Rekoh ti ja. RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - npejcic - 10-08-2018 Vidim da ste se snašli Hvala @enaB, i ja sam se snašao u međuvremenu, postavio sam ovaj kompajler: https://developer.arm.com/open-source/gnu-toolchain/gnu-rm Zatim instalirao ovo: http://www.mingw.org/ I zanimljivo, meni neočekivao, kada sam uradio "make", kompajler mi je privaljivao grešku za koju sam kasnije shvatio da je inicirana time što nisam kreiro "build" folder u okviru projekta. Nekako sam sledio loguku da će kompajler sve što treba od foldera da kreira... mada kada bolje razmislim, a što bi to on radio RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - mikikg - 10-08-2018 Treba to malo istestirati, povezati par nekih bibliotekica (npr Boost) i onda probati recimo -O3 flag (maximalna optimizacija) ... Kod mene tako cross-preveden program na RPI onda kaze cuveno "Segmentation Fault", bez toga radi!!! Probajte ... Na RPi kada se prevede isti taj program sa -O3 nemam nikakvih problema, tako daaaaa, nije to sve bas idealno kao sto izgleda .... Ako pocne prevodilac tako da zeza onda od ta posla nema nista, pa ozbiljno ... RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - mikikg - 10-08-2018 Sta bi se tek desilo da sam hteo Buildroot da pokrenem https://buildroot.org Mislim da pre ovoga treba da proverim da li ima slobodnog mesta u ustanovi "Male Pcelice" posto je tamo guzva velika, ceka se mesto .... RE: RPi cross-compile C/C++ za MacOS (x86 -> ARM) - mikikg - 10-17-2020 Korisni linkovi za cross-compile na *nix za ARM procesore: Demystifying ARM Floating Point Compiler Options https://embeddedartistry.com/blog/2017/10/11/demystifying-arm-floating-point-compiler-options/ Objasnjenje i praktican primer https://freckled.dev/how-to/2019/07/29/create-gcc-crosscompiler/ Ovo je bitno takodje: arm-none-eabi - This tool chain targets for ARM architecture, has no vendor, does NOT target an operating system and complies with the ARM EABI. arm-none-linux-gnueabi - This toolchain targets the ARM architecture, has no vendor, creates binaries that run on the Linux operating system, and uses the GNU EABI. |