C Programmieren

Dieses Thema im Forum "Mac OS X Entwickler, Programmierer" wurde erstellt von SteffiS, 03.04.2003.

  1. SteffiS

    SteffiS Thread Starter MacUser Mitglied

    19
    0
    05.01.2003
    Man kann doch mit dem ProjectBuilder auch C programmieren, oder?
    ich versuch das gerade und kriegs irgendwie nicht hin..
    Wenn ich "new project" und dann "standardTool" öffne, kann ich die main-datei ausführen (hello world) und ändern. aber sobald es etwas komplexer wird, geht's nicht mehr. ich kann zwar compilieren, die fehlermeldungen sehen, aber auch wenn ich dann alles richtig hab, und ich 'run' machen will, kommt nix, bzw. es läuft unendlich.
    wo sind denn die header-dateien abgelegt (stdio.h z.B.) ? wo müssen die sein, damit das klappt?

    gibt es sonst eine andere möglichkeit, c auf dem mac zu programmieren? über eine kommandozeile etc..
     
    Zuletzt bearbeitet: 04.04.2003
  2. mj

    mj MacUser Mitglied

    5.321
    229
    19.11.2002
    Du bist da einem kleinen Irrtum aufgesessen, der Project Builder und Cocoa laufen mit Objective C oder JAVA, normales C wird hierbei nicht unterstützt - wenn ich mich nicht irre. Sollte aber kein Problem sein, mit den Developer Tools wird der Compiler "gcc" mitinstalliert, mit Hilfe dessen kannst du C-Programme mit TextEdit oder einem beliebigen Editor deiner Wahl kreieren und anschließend in der Kommandozeile compilieren.
     
  3. SteffiS

    SteffiS Thread Starter MacUser Mitglied

    19
    0
    05.01.2003
    mit dem terminal hab ich dasselbe problem. ich kann das programm da zwar kompilieren, aber die datei später nicht ausführen, obwohl sie erstellt wurde.
    woran liegt das? gibt es da einen besonderen befehl, oder liegt es vielleicht doch daran, dass die header-dateien nicht vorhanden sind? kann man die dann irgendwo herkriegen?

    danke,
    steffi

    BTW: ist Objective C eigentlich das selbe wie C++ ?
     
  4. mj

    mj MacUser Mitglied

    5.321
    229
    19.11.2002
    Wäre Objective C das selbe wie C++ würde es wohl auch so heißen ;) Im Terminal compilierte Programme kannst du dann auch nur in diesem Starten, so läuft das ganze dann:

    gcc program.c
    ...
    ./program

    mit ersteren compilierst du das Programm, mit zweiterem rufst du es auf.
     
  5. SteffiS

    SteffiS Thread Starter MacUser Mitglied

    19
    0
    05.01.2003
    oh ja, jetzt klappt's, danke schön! dachte, man könnte es einfach durch eingabe des binärprogrammnamens ausführen so wie bei UNIX (es fehlte mir also nur das ./).
     
  6. mj

    mj MacUser Mitglied

    5.321
    229
    19.11.2002
    Das ./ ist eigentlich eine UNIX-typische Eigenschaft. Bei der Ausführung von UNIX-Programmen muss immer der komplette Pfad mit angegeben werden, für Programme im aktuellen Pfad ist das eben ./
    Jedoch hängt dies entscheidend von der verwendeten Shell ab, einige Shells benötigen das nicht.
     
  7. empire

    empire MacUser Mitglied

    18
    0
    28.01.2003
    Mal ne Frage nebenbei

    was genau ist nun Objective C ?

    Thanks
     
  8. aquarius

    aquarius MacUser Mitglied

    87
    0
    29.06.2002
    man kann im project bulider auch normale c programme compillieren. lies dir mal diesen artikel durch: http://cocoadevcentral.com/articles/000054.php
     
  9. ulf

    ulf MacUser Mitglied

    14
    0
    02.07.2003
    Hi SteffiS!

    Vielleicht ein paar Tips:

    1. Objective-C ist eine Smalltalk ähnliche OO Variante von C (nicht zu verwechseln mit C++)

    2. C++ ist ein OO Aufsatz auf Ansi-C

    3. Man kann in Objective-C auch C++ Code schreiben (jedenfalls bei Apple), damit bestehender Code wiederverwertet werden kann. mann kann es tatsächlich mixen, ist kein problem

    4. Man kann mit dem Project-Builder auch ganz normale C-Programme schreiben, diese sind in Ihrer Größe und Funktionalitaet nicht eingeschraenkt (mache ich manchmal, good old times...) ist auf jedenfall komfortabler als in der shell zu arbeiten, was natuerlich auch geht.

    5. Die Haus- und Hofsprache für Mac OS X (wenn man die netten GUI's verwenden will) ist Objective-C da Cocoa (die Klassenbibliothek für die netten GUI's) in Obj.-C geschrieben ist.

    6. Man kann auch mit Java die netten GUI's bauen, da Apple freundlicherweise für fast alle Cocoa-Klassen entsprechende Java-Klassen zur Verfügung stellt (nur nicht da wo es keinen Sinn macht, bzw. gleichwertige Klassen von Java mitgeliefert werden)

    Wenn Du was nicht verstanden hast, dann liegt das garantiert an mir. Ich bin nicht der Weltmeister im erklaeren, frag dann einfach nochmal nach...

    Ulf
     
  10. ulf

    ulf MacUser Mitglied

    14
    0
    02.07.2003
    Zu der Sache mit dem "./"

    Es ist unter UNIX so, daß man, wenn man Superuser ist (alle die ihren Mac betreiben stellen es so ein dass sie ihn auch administrieren) keine programme im aktuellen Pfad ausführen, d.h. die PATH variable enthaelt nicht den eintrag "." oder "./". Warum ?

    Eine reine Sicherheitsmassnahme. Nehmen wir an, UNIX laueft als Multiuser System im Netz, 100 user eingeloggt.
    Ein User will in den Status des Superusers kommen (die Hauptbeschaeftigung der Studies);), dann muss er entweder das password des superusers kennen oder es aendern koennen. wenn er das password nicht kennt, bleibt nur weg nr. 2 und der geht so:

    Man schreibe ein programm, welches in der datei /etc/shadow das password des su loescht oder einen vorher ausgeknobelten Eintrag darin plaziert. das darf ein user programm aber nicht, weil die besagte datei nur vom su gelesen und/oder veraendert werden darf.

    Wie kann man also selber sein password aendern ?
    Es gibt die moeglichkeit unter unix (durch setzen des SUID-Bit in der anwendung) ein programm mit den rechten seines besitzers laufen zu lassen. das Programm passwd z.B. gehoert dem su und darf su-dateien aendern. damit geht das dann.

    und jetzt kommt der trick:

    man schreibt ein hack-programm fuer die password datei und nennt es "ls". Dieses Programm aendert die password datei, ruft anschliessend das echte "ls" programm auf, und loescht sich selbst oder so aehnlich.
    dann setzt mann das SUID-Bit und aendert den Eingetuemer auf "root" (so heisst der superuser unter unix).
    jetzt ruft man den su an, und faselt irgendwas von einer verlorenen datei, und ob er nicht mal schauen koennte.

    er wird in das userverzeichnis gehen, und... na was wohl? "ls -la" eingeben.

    Schon ist es passiert. das fake programm ist gelaufen, das su passwort geloescht, der user kann jetzt selber 'ran.

    Der superuser schoepft im ersten moment keinen verdacht, weil auf seiner konsole das erwartete passieren wird.

    Deshalb muss man ./ vor einem programm angeben, damit ein admin nicht in so eine falle tappt.

    So aehnlich funktioniert das im prinzip... bitte nicht meckern, wenn ich das eine oder andere detail weggelassen habe.

    Ulf
     
Die Seite wird geladen...

Diese Seite empfehlen