Posts: 8.746
Threads: 138
Joined: Apr 2013
Reputation:
3.629
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>
int main() { std::cout << "Hello world" << std::endl; return 0; }
Posts: 666
Threads: 40
Joined: Jul 2015
Reputation:
398
Posts: 8.746
Threads: 138
Joined: Apr 2013
Reputation:
3.629
10-07-2018, 06:23 PM
(This post was last modified: 10-07-2018, 06:23 PM by mikikg.)
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 ....
Posts: 720
Threads: 11
Joined: Mar 2013
Reputation:
324
Jel moze da se pokrene program kompajliran sa Cygwinom na Windowsu, na MacOS?
Posts: 8.746
Threads: 138
Joined: Apr 2013
Reputation:
3.629
10-07-2018, 06:35 PM
(This post was last modified: 10-07-2018, 06:40 PM by mikikg.)
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.
Posts: 1.853
Threads: 25
Joined: Nov 2013
Reputation:
790
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?
Posts: 720
Threads: 11
Joined: Mar 2013
Reputation:
324
Ako ti nesto pomaze, imam gcc 4.7 koji radi na Windowsu sa Cygwinom, a kompajlira za ARM.
Posts: 8.746
Threads: 138
Joined: Apr 2013
Reputation:
3.629
10-07-2018, 06:56 PM
(This post was last modified: 10-07-2018, 06:59 PM by mikikg.)
@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 ...
Posts: 8.746
Threads: 138
Joined: Apr 2013
Reputation:
3.629
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 ...
Posts: 1.158
Threads: 27
Joined: Oct 2014
Reputation:
313
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
Posts: 8.746
Threads: 138
Joined: Apr 2013
Reputation:
3.629
Hehe, svako ko je pokusao da uradi cross-compile za RPi je odlepio na kraju ... : )
Posts: 720
Threads: 11
Joined: Mar 2013
Reputation:
324
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
Posts: 8.746
Threads: 138
Joined: Apr 2013
Reputation:
3.629
10-07-2018, 09:23 PM
(This post was last modified: 10-07-2018, 09:26 PM by mikikg.)
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
ls -la app
-rwxr-xr-x 1 miki staff 3776 Oct 7 22:23 app
file app
app: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 4.3.0, stripped
I radi na RPi .... e to je vec napredak
Posts: 8.746
Threads: 138
Joined: Apr 2013
Reputation:
3.629
10-07-2018, 09:35 PM
(This post was last modified: 10-07-2018, 09:38 PM by mikikg.)
BTW: tamo spominju da se ide na ARM-ov sajt i skine toolchain:
https://developer.arm.com/open-source/gn.../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 ...
Posts: 666
Threads: 40
Joined: Jul 2015
Reputation:
398
Rekoh ti ja.
Posts: 1.853
Threads: 25
Joined: Nov 2013
Reputation:
790
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/gn...ain/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
Posts: 8.746
Threads: 138
Joined: Apr 2013
Reputation:
3.629
10-08-2018, 08:48 AM
(This post was last modified: 10-08-2018, 09:05 AM by mikikg.)
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 ...
Posts: 8.746
Threads: 138
Joined: Apr 2013
Reputation:
3.629
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 ....
Posts: 8.746
Threads: 138
Joined: Apr 2013
Reputation:
3.629
Korisni linkovi za cross-compile na *nix za ARM procesore:
Demystifying ARM Floating Point Compiler Options
https://embeddedartistry.com/blog/2017/1...r-options/
Objasnjenje i praktican primer
https://freckled.dev/how-to/2019/07/29/c...scompiler/
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.
|