[elektro] OT: Lazarus
Lajos Rancz
lajos.rancz at gmail.com
Sat Dec 21 08:40:13 CET 2013
Hi!
Ki csinálja a makefilet? Te vagy az IDE? Az IDE által generált
makefile-okkal szokott lenni probléma de ez nem a compiler/linker dolga, az
azt csinálja amit mondanak neki. Mi elhagytuk az IDE-s (Eclipse) buildet és
külön build rendszer van. Nyilván kellett rá időt szánni, de mivel több
platform (Linux, DLL) is van azért bőven megérte.
Üdv
2013. december 20. 22:48 Móczik Gábor írta, <pm_levlista at progzmaster.hu>:
> 2013.12.20. 20:57 keltezéssel, Lajos Rancz írta:
> > Már hogy ne tesztelnek! Nálunk van egy Cortex A8-on (meg ARM926EJ-S-en)
> > futó eléggé széjjel templatezett C++ kód (Linux alatt, gcc 4.6, most
> > tervezünk áttérni gcc 4.8.1-re, C++11 feature-ök miatt) plusz Cortex
> M3-on
> > futó viszonylag kevés template kódot tartalmazó app (TI compiler).
> Egyedül
> > a TI DSP compiler nem szereti (annyira) a C++-ot, de inkább a saját
> > template kódokkal van probléma, nem az STL-el vagy a sima osztályokkal.
> > Szóval bátran lehet C++-t használni akár kis órajelű kevés RAM-ot
> > tartalmazó kütyüknél is, de tisztában kell lenni a szabályokkal (amik
> > sokkal számosabbak a sima C-nél)
>
> Egyelőre engem a sima osztályok érdekeltek volna a C++ -ban lévő egyéb
> komoly cucc nélkül, de legutóbb nekem nem sikerült.
>
> Na jó, tettem egy kicsit komolyabb erőfeszítést.
>
> CooCox CoIDE legújabb verzió, STM32F407ZGT6 chip
>
> Egy eszméletlen bonyolult CPP fájl hozzáadásával máris indult a művelet:
>
> ../../gcc-4.2.2/gcc/config/arm/unwind-arm.c:464: undefined reference to
> `__exidx_start'
> ../../gcc-4.2.2/gcc/config/arm/unwind-arm.c:464: undefined reference to
> `__exidx_end'
>
> Nem nagy kunszt, 10-15 perc guglizás után kiderült, hogy nem jó a linker
> script amit az IDE generál, és itt egy minta:
>
>
> http://www.brc-electronics.nl/component/kunena/5-Programming-and-software/615-Coocox-and-C-cpp?Itemid=0
>
> Onnan a sample linker scriptet kimásolva majdnem jó is, csak a memória
> címeket kell átírni az eredeti scriptben lévő címekre. Ja, meg persze a
> neveket, mert nem egyezik, tehát a copy-paste után is van munka.
>
> Build sucessful. Zsír. :-)
>
> Eddig marhára user-friendly, pont erről szól a másik téma, hogy ha már
> IDE-t használunk, hogy kényelmes legyen és generáljon egy linker
> scriptet, akkor hadd ne kézzel szerkesszem már...
>
>
> Akkor talán hozzunk létre egy példányt.
>
> CTest1 ts;
>
> ts.set_a(22);
>
>
> [cc]
> D:\projects\demo\stm32-e407\STM32-E407_blink_FLASH/main.cpp:112:
> undefined reference to `__cxa_end_cleanup'
> [cc] ..\obj\main.o: In function `main':
> [cc] ..\obj\main.o:(.ARM.extab.text.main+0x0): undefined
> reference to `__gxx_personality_v0'
>
>
> Újabb pár perc guglizás után kiderült, hogy vélhetően az a hiba, hogy
> gcc-vel fordítja g++ helyett a kódot. Azonban hogy ezt hogy kéne elérni,
> az rejtély, általában a CPP fájl kiterjesztés elég szokott lenni. Itt
> kissé megállt a tudomány.
>
>
> Bizonyára megoldom ha még tökörészek vele, de azért példának azt hiszem
> ez így elég jó, hogy mennyire is nem működik ez még out-of-the-box. Maga
> a compiler bizonyára hibátlan, de a körítés még nem tökéletes. Kevés
> érdeklődő van, ezért nincs szénné tesztelve ez a terület. Tele van a net
> hasonló problémákkal.
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list