ubuntuusers.de

GCC Konfiguration auslesen

Status: Ungelöst | Ubuntu-Version: Kubuntu 12.04 (Precise Pangolin)
Antworten |

lucian

Anmeldungsdatum:
18. Juli 2006

Beiträge: 94

Hallo,

gibt es eine Möglichkeit bei GCC heraus zubekommen mit welchen Optionen dieser gebaut worden ist?

In meinen speziellen Fall ist es ein GCC 3.4.6 für eine SH2A CPU der mit einem BSP Linux für ein Embedded Board kam. Leider unterstütz dieser kein C++ oder zumindenst nicht richtig. Deswegen wollte ich mir den gcc neu bauen mit c++ Unterstützung und die alte Konfig als Basis nutzen da diese ja grundsätzlich funktioniert.

Inkane

Anmeldungsdatum:
17. Oktober 2010

Beiträge: 306

Bei mir gibt

gcc -v

zumindest einige Optionen aus, ist allerdings auch ein gcc 4.7.0.

lucian

(Themenstarter)

Anmeldungsdatum:
18. Juli 2006

Beiträge: 94

@Inkano -v ist nur für die der GCC baut und steht für verbose, sagt aber leider nichts über die Konfiguration mit der der GCC selbst gebaut wurde. Also das configure --target=... usw

Inkane

Anmeldungsdatum:
17. Oktober 2010

Beiträge: 306

Ich bin mir nicht sicher ob wir das selbe meinen, aber http://pastebin.com/jj0LG3Fs zeigt mir die Parameter die ./configure beim Bauen von gcc erhalten hatte. Oder was meinst du genau?

mickydoutza

Avatar von mickydoutza

Anmeldungsdatum:
31. Dezember 2010

Beiträge: 2185

lucian schrieb:

gibt es eine Möglichkeit bei GCC heraus zubekommen mit welchen Optionen dieser gebaut worden ist?

Versuch mal mit:

strings /usr/bin/gcc | less

Darkstar999

Avatar von Darkstar999

Anmeldungsdatum:
21. September 2008

Beiträge: 324

Hallo was mainst du den jetzt genau da gcc ja für C ist g++ für C++!

mfg darkstar999

mickydoutza

Avatar von mickydoutza

Anmeldungsdatum:
31. Dezember 2010

Beiträge: 2185

Darkstar999 schrieb:

... da gcc ja für C ist g++ für C++!

gcc kompiliert auch C++ (z. B. mit -lstdc++). Die manpage sagt ja auch:

gcc - GNU project C and C++ compiler

😉

Darkstar999

Avatar von Darkstar999

Anmeldungsdatum:
21. September 2008

Beiträge: 324

Ok danke wieder was dazugelernt ^^.

mfg darkstar999

Edit: Mal ne andere Frage kann die Cpu überhaupt mit C++ um µC können auch nicht mit C++ (OOP) ,da das von der Hardware her nicht geht!!

lucian

(Themenstarter)

Anmeldungsdatum:
18. Juli 2006

Beiträge: 94

@Darkstar was hat den die Programmiersprache mit der CPU zu tun? C++ ist wie C eine Hochsprache und endet wie alle andere auch in entsprechenden Maschinencode.

Ok, das mit dem -v zeigt wirklich einiges an. Scheint aber leider nur beim gcc version 4 so zu sein die Ausgabe beim verwendeten Version 3.4.6 ist eher dürftig.

../gcc-3.4.6/configure --prefix=/home/user/Desktop/sh7203-uclinux-2.0/build/target --target=sh-linux --with-sysroot=/home/user/Desktop/sh7203-uclinux-2.0/build/target --enable-languages=c --disable-shared
Thread model: posix
gcc version 3.4.6

Darkstar999

Avatar von Darkstar999

Anmeldungsdatum:
21. September 2008

Beiträge: 324

lucian schrieb:

@Darkstar was hat den die Programmiersprache mit der CPU zu tun? C++ ist wie C eine Hochsprache und endet wie alle andere auch in entsprechenden Maschinencode.

Im Gegensatz zu C ist C++ Objektorientiert (OOP) Was auch der Grund ist warum du einen µC nicht in C++(OOP) programmieren kannst. Damit ein µC C versteht und in C programmierbar ist braucht es einen asm startup der in der Regel auch von dem Nutzer nicht veränderbar ist . Ich gehe davon aus das das bei einem µP ähnlich ist! Dafür musst du das ganze auf Hardwareebene betrachten Digital und Rechnertechnik 1 u. 2 im Studium z.B Informationstechnik lassen grüßen.

mfg darkstar999

Edit: Ne schöne Vorlesungsreihe zum Thema µP Programmierung http://alt.ife.tugraz.at/LV/upprog/index.htm

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

Darkstar999 schrieb:

lucian schrieb:

@Darkstar was hat den die Programmiersprache mit der CPU zu tun? C++ ist wie C eine Hochsprache und endet wie alle andere auch in entsprechenden Maschinencode.

Im Gegensatz zu C ist C++ Objektorientiert (OOP) Was auch der Grund ist warum du einen µC nicht in C++(OOP) programmieren kannst. ... Dafür musst du das ganze auf Hardwareebene betrachten Digital und Rechnertechnik 1 u. 2 im Studium z.B Informationstechnik lassen grüßen.

Schade das diese Studiengänge soweit gefallen sind. ☹ Wobei ich ja noch hoffe, dass du etwas missverstanden hast. Mit welchem Konzept man programmiert, dass merkt der Prozessor doch garnicht. Möglich dass es für den von dir bearbeiteten µController die nötigen Libs nicht gibt, das wäre aber auch nur eine kleine Aufgabe diese entsprechend zu erstellen.

Ich habe schon OOP in C++ auf einem Arduino programmiert. Es geht also definitiv.

Damit ein µC C versteht und in C programmierbar ist braucht es einen asm startup der in der Regel auch von dem Nutzer nicht veränderbar ist . Ich gehe davon aus das das bei einem µP ähnlich ist!

Üblicherweise gibt es einen Bootloader, der in Assembler geschrieben ist. Der macht aber nix weiter, als den Prozessor/Adresspointer auf einen bestimmten Bereich zu stellen, was dann kommt ist wiederum nur Assemblecode, der allerdings häufig durch einen Compiler erstellt wurde. Programmiersprache ist dabei egal.

Edit: Ne schöne Vorlesungsreihe zum Thema µP Programmierung http://alt.ife.tugraz.at/LV/upprog/index.htm

Kannst du eventuell direkt verlinken, wo da steht, dass man die nicht mit OOP programmieren kann? Ich konnte es nicht finden, dagegen wurden als mögliche Sprachen C++ und Java explizit aufgelistet, die beide OOP direkt unterstützen.

Edit: Achso völlig vergessen, was zum Thema zu schreiben 😀

lucian schrieb:

Ok, das mit dem -v zeigt wirklich einiges an. Scheint aber leider nur beim gcc version 4 so zu sein die Ausgabe beim verwendeten Version 3.4.6 ist eher dürftig.

Möglicherweise wurden einfach nicht mehr Optionen verwendet? Wenn man nix angibt werden ja die Standardwerte verwendet.

Darkstar999

Avatar von Darkstar999

Anmeldungsdatum:
21. September 2008

Beiträge: 324

stfischr schrieb:

Wenn das doch bei jedem µC/µP etc. generell geht bitte Zeige mir das beim 8051 von Intel und ich ziehe den Hut vor dir. Objektorientierten C++ Code und nicht C++ Code der nur C Anteile hat, Klassen und Mehrfachvererbung nutzt !

mfg darkstar999

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

Scheinbar gibt es für den MCS-51 nicht die nötigen Libs um nen C++ Compiler zu nutzen, ist aber wie gesagt nicht das Problem welche zu erstellen, hat scheinbar keiner für nötig gehalten, da man µC im allgemeinen mit C oder Assembler beackert und besonders bei so minmalistischen Controllern wie MCS-51 mit C++ schnell Platzprobleme bekommt. Dass das aber nix mit OOP zu tun hat zeigt schon allein die Tatsache, das es einen Object-Pascal-Compiler (Turbo51) für den Chip gibt:
http://www.ieap.uni-kiel.de/surface/ag-berndt/lehre/fpmc/docs/turbo-51-d.pdf

Turbo51 hält sich weitgehend an die Syntax von Borland Turbo Pascal 7 einschließlich der objekt-orientierten Programmierung (OOP), benutzt aber einige zusätzliche Direktiven und Konstrukte, um die speziellen Eigenschaften der 8051-Familie (MCS-51) zu unterstützen.

Davon ab kann man ja auch in C OO programmieren, wenn auch sehr unkomfortabel.

Darkstar999

Avatar von Darkstar999

Anmeldungsdatum:
21. September 2008

Beiträge: 324

Täusche ich mich da gerade C und Vererbung,Mehrfachvererbung ? Objektorientierung programmieren ohne Vererbung ist nicht mit C++ vergleichbar. Ok man kann in Strukturen auch Funktionen einbetten das ist nicht das Problem. Aber Vererbung und Überladung von Funktionen in C da kenne ich leider keine Beispiele für. Geschweige denn Virtuelle Funktionen und Abstrakte Klassen sehe ich keinen weg in C für. Lasse mich aber gerne eines besseren belehren.

mfg darkstar999

Inkane

Anmeldungsdatum:
17. Oktober 2010

Beiträge: 306

Erst einmal: OOP ist ein Konzept, in welchem Klassen nicht benötigt werden, siehe etwa IO oder JavaScript. Außerdem ist es für den Prozessor völlig egal ob der Code jetzt in einer funktionalen, einer prozeduralen, einer objektorientierten oder einer deklarativen Sprache geschrieben wurde; es ist die Aufgabe des Compilers für den nötigen Maschienencode oder die nötige Assembly zu sorgen.

P.S. Für OOP in Ansi C gibt es sogar ein Buch: "Object Orientated Programming in ANSI-C", von Axel Schreiner.

Antworten |