Forum: Compiler & IDEs C++ mit CooCox


von deep d. (deepdiver99)


Lesenswert?

Wie bekomme ich C++ unter CooCox zum laufen?

Toolchain ist GNU Tools ARM Embedded 4.7 2013q2

Viele Grüße Deepdiver99

von Michael F. (startrekmichi)


Lesenswert?

Eine main.cpp anlegen und kompilieren. Klingt zwar doof, aber bei mir 
hat das direkt funktioniert. Ich wollte nämlich mal testen, ob sich die 
Eigen3 Bibliothek auf dem STM32F4 bauen lässt und ja, es geht.

von deep d. (deepdiver99)


Lesenswert?

Michael Frangenberg schrieb:
> Eine main.cpp anlegen und kompilieren. Klingt zwar doof, aber bei mir
> hat das direkt funktioniert. Ich wollte nämlich mal testen, ob sich die
> Eigen3 Bibliothek auf dem STM32F4 bauen lässt und ja, es geht.

Macht kein Unterschied :-(

[cc] C:\CooCox\CoIDE\workspace\TESTCPlusPlus\main.c:3:1: error: unknown 
type name 'class'
[cc] C:\CooCox\CoIDE\workspace\TESTCPlusPlus\main.c:4:1: error: expected 
'=', ',', ';', 'asm' or '__attribute__' before '{' token

von Michael F. (startrekmichi)


Lesenswert?

deep diver99 schrieb:
> main.c

Da ist schon der Fehler. Der gcc schaut sich die Endungen an und 
entscheidet danach ob C oder C++. Benenn die Datei in main.cpp um, denn 
main.c wird als normales C interpretiert.

von holger (Gast)


Lesenswert?

>Eine main.cpp anlegen

Was hast du daran nicht verstanden eine main.cpp
anzulegen und keine main.c?

>main.c :3:1: error: unknown
>type name 'class'

von deep d. (deepdiver99)


Lesenswert?

Super, jetzt hat er erst mal "class" geschluckt.

Gibt es einen einfachen Weg für die Umbenennung. Habe jetzt in der 
DOS-Konsole umbenannt und dann bei CooCox gelöscht und neu geladen.

von deep d. (deepdiver99)


Lesenswert?

holger schrieb:
>>Eine main.cpp anlegen
>
> Was hast du daran nicht verstanden eine main.cpp
> anzulegen und keine main.c?
>
>>main.c :3:1: error: unknown
>>type name 'class'

Das hab ich schon verstanden, Holger :-)

Leider hat das einfache umbenennen im Projektexplorer nichts gebracht. 
Hatte dann nicht gesehen das er noch die "alte" .c nimmt.

Also einfach nicht genau hin geschaut.

von deep d. (deepdiver99)


Lesenswert?

Jetzt nimmt er zwar die C++ Befehle aber die anderen Sachen laufen nicht 
mehr :-(.

[cc] arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -g -nostartfiles 
"-Wl,-Map=UART Test.map" -O0 -Wl,--gc-sections 
"-LC:\CooCox\CoIDE\configuration\ProgramData\UART Test" 
"-Wl,-TC:\CooCox\CoIDE\configuration\ProgramData\UART 
Test/arm-gcc-link.ld" -g -o '"UART Test.elf"' ..\obj\stm32f4xx_syscfg.o 
..\obj\stm32f4_discovery_audio_codec.o ..\obj\stm32f4xx_usart.o 
..\obj\stm32f4xx_dac.o ..\obj\startup_stm32f4xx.o 
..\obj\stm32f4_discovery.o ..\obj\main.o ..\obj\stm32f4xx_rcc.o 
..\obj\stm32f4xx_gpio.o ..\obj\system_stm32f4xx.o ..\obj\stm32f4xx_dma.o 
..\obj\stm32f4_discovery_callbacks.o ..\obj\stm32f4xx_spi.o 
..\obj\stm32f4xx_i2c.o ..\obj\stm32f4xx_exti.o ..\obj\misc.o 
..\obj\stm32f4_discovery_lis302dl.o -L..\..\..\STM32F4-Discovery 
-lpdmfilter_gcc

[cc] c:/program files (x86)/gnu tools arm embedded/4.7 
2013q2/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/ 
armv7e-m\libg.a(lib_a-abort.o):  In function `abort':

[cc] abort.c:(.text.abort+0xa): undefined reference to `_exit'

[cc] c:/program files (x86)/gnu tools arm embedded/4.7 
2013q2/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/ 
armv7e-m\libg.a(lib_a-signalr.o):  In function `_kill_r':

[cc] signalr.c:(.text._kill_r+0xe): undefined reference to `_kill'

[cc] c:/program files (x86)/gnu tools arm embedded/4.7 
2013q2/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/ 
armv7e-m\libg.a(lib_a-signalr.o):  In function `_getpid_r':

[cc] signalr.c:(.text._getpid_r+0x0): undefined reference to `_getpid

[cc] collect2.exe: error: ld returned 1 exit status

von deep d. (deepdiver99)


Lesenswert?

Kann es sein das die Standart Library's nicht mehr laufen wenn ich die 
main.c in main.cpp bei CooCox umbenenne?

von Dr. Sommer (Gast)


Lesenswert?

bitte einmal STM32: GCC lesen. Du musst mit -fno-exceptions und 
-fno-rtti linken & compilen.

von meloun (Gast)


Lesenswert?

Wo kann man das machen in CooCox?

Eigentlich nahc meiner Meinung sollte man noch g++ anstatt gcc 
einstellen.
Aber habe ich nicht geschaft..

Main.cpp
=============
class A{

};

int main(void){
    while(1)
    {
    }
}

kriege ich

GCC HOME: D:\privat\_stm32\toolchains\GNU Tools ARM Embedded\4.7 
2013q2\bin
compile:
    [mkdir] Created dir: 
D:\programs\CooCox\CoIDE\workspace\Test_CPP_makefile\Test_CPP_makefile\D 
ebug\bin
    [mkdir] Created dir: 
D:\programs\CooCox\CoIDE\workspace\Test_CPP_makefile\Test_CPP_makefile\D 
ebug\obj
       [cc] 1 total files to be compiled.
       [cc] arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Wall 
-ffunction-sections -g -O0 -c -DSTM32F103RB -DSTM32F10X_MD 
-ID:\programs\CooCox\CoIDE\workspace\Test_CPP_makefile 
D:\programs\CooCox\CoIDE\workspace\Test_CPP_makefile\main.c
       [cc] 
D:\programs\CooCox\CoIDE\workspace\Test_CPP_makefile\main.c:1:1: error: 
unknown type name 'class'
       [cc] 
D:\programs\CooCox\CoIDE\workspace\Test_CPP_makefile\main.c:1:8: error: 
expected '=', ',', ';', 'asm' or '__attribute__' before '{' token

BUILD FAILED
Total time: 0 seconds

von Dr. Sommer (Gast)


Lesenswert?

meloun schrieb:
> D:\programs\CooCox\CoIDE\workspace\Test_CPP_makefile\main.c
Das ist eine C-Datei. C kennt keine Klassen. Nehme die Datei aus dem 
Projekt, benenne sie in main.cpp um, füge sie wieder hinzu, Coocox 
sollte sie dann als C++ erkennen.
Das kommt davon wenn man mit Klickibunti-IDE's arbeitet die alles 
wichtige irgendwo verstecken... Bei makefiles weiß man immer wo man 
Flags & Kommandos ablegen muss.

von Horst (Gast)


Lesenswert?

Vllt. auch mal nen clean machen damit er die alten Objects ersetzt...

von Lubos M. (lubo_m)


Lesenswert?

Nein, nein, nein...

Da ist kein main.c im Projekt mehr. (nur main.cpp)
Da ist keine Einstellung wo kann ich main.c rausnehmen oder Kompiler 
auswählen.
Ich habe mehrmals rebuild probiert.. (clean gibts auch nicht)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.