Archiv verlassen und diese Seite im Standarddesign anzeigen : Des mit dem compilieren geht einfach nicht!
Ich habe schon vor einiger zeit einmal mein problem mit dem compilieren erläutert.
Wenn ich ein programm mit gcc oder g++ compiliere und danach ausführe dann geht das entweder nicht oder es präsentiert sich mir das login.
Damals konnte mir keiner helfen. Ich habe weiterprobliert und es ging immernoch nicht.
Ich frage jetzt: Angenommen du willst ein programm compilieren das du zuvor in c oder c++ geschrieben hast. Was machst du dann ganz genau, haarklein und im detail bis zum ausführen des fertigen programms?
Es ist sehr frustrierend nicht mir linux arbeiten zu können, wo ich doch ein newbie bin und noch soviel lernen muß.
Hallo!
Bitte versteh das nicht falsch, aber als erstes würde ich dir empfehlen in eine gut sortierte Fachbuchhandlung mit guter EDV Abteilung zu gehen und dort ein Buch zur Programmierung unter Linux/Unix, so wie über den GCC zu besorgen. Hmm... ein Buch zu GCC, kann sein das du dazu im Internet suchen mußt.
Hier mal ein wirklich einfaches Beispiel:
#include <stdio.h>
void main(void)
{
printf("Hello World\n");
}
Das speicherst du als helloworld.c.
Dann compilierst du es mit
gcc -Wall -o helloworld -c helloworld.c
Danach solltest du ohne Probleme die Datei helloworld haben und dieser evtl. noch die Ausführungsrechte geben (chmod 0755 helloworld).
Dann kannst du mit
./helloworld
das Programm ausführen und bekommst den Text "Hello World!" angezeigt.
Alles andere, was etwas komplexer ist, hier bis ins kleinste Detail zu erklären, würde den Rahmen sprengen. Das käme schon einem "Programmieren unter Linux/Unix" Kurs gleich.
Gruß
Robert
[Diese Nachricht wurde von robert am 06. März 2000 editiert.]
Robert, vielen Dank...
Auch ich hatte dieses Problem.
Ich schreibe momentan noch unter B C++ 4.0, aber will das jetzt endgültig über Board werfen. Aber wenn man etwas programmieren kann, und anschließend nicht benutzen, weil man die Parameter nicht kennt, kann das sehr frustrierend für einen Newbie wie DrGonzo oder mich sein...
Also in diesem Sinne, vielen Dank, dieses Forum macht auf jeden Fall Sinn http://www.linuxforen.de/ubb/icons/icon7.gif
Mike
------------------
Hagen von Tronje
06.03.00, 19:49
HILFE!
"void main"
Aaargh!
Liegt das am Fasching/Karneval?
> ... -c ...
Auch falsch! Das Proggie wird jetzt nicht gelinkt!
Und nun ein korrektes C-Programm:
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
return 0;
}
So DrGonzo,
obiges Programm speicherst Du unter
hello.c
ab und gibst dann in einer shell bzw. terminal ein
gcc -ansi -pedantic -Wall -v -o hello hello.c
und poste die Ausgabe hier in diesem Forum.
Und nach dem Compilieren:
ls -l hello
(und die Ausgabe hier posten)
sodann:
file ./hello
(und die Ausgabe hier posten)
Ausserdem gib ein:
uname -a
(und die Ausgabe hier posten)
echo $PATH
(und die Ausgabe hier posten)
echo $TERM
(und die Ausgabe hier posten)
echo $0
(und die Ausgabe hier posten)
pwd
(und die Ausgabe hier posten)
id
(und die Ausgabe hier posten)
which gcc
(und die Ausgabe hier posten)
umask
(und die Ausgabe hier posten)
Welchen Windowmanager/GUI verwendest Du
und welche Distri hast Du?
Nachdem Du das erledigst hast,
sehen wir (hoffentlich) klarer http://www.linuxforen.de/ubb/smile.gif
Hagen
PS
obiges proggie laesst sich mit
./hello
starten
PPS
Normale (Anwendungs-)proggies sollten immer unter
normal-user erstellt und compiliert werden
(nicht als Super-user root).
[Diese Nachricht wurde von Hagen von Tronje am 06. März 2000 editiert.]
Hi,
also, ähm, ja ich äh es geht jetzt, aber das problem lag nicht am source code oder compiler oder so. Nein, ich als dos und windows geschädigter hab natürlich nicht gewusst das man bei der linux shell ./ vor ein programm setzten muß um es auszuführen.
Es tut mir leid das ich dadurch eure zeit verschwendet habe. Aber das steht ja auch nirgendswo, ich hab "linux für dummies" gelesen und diverse linux schnell einstiegs artikel in ct und so, darüber hat mich aber niemand informiert.
Nebenbei, Hagen, ich habe in diversen c sourcecodes das "netinet/" include verzeichniss gefunden, da ich viel mit windows arbeite(notgedrungen da ich unter linux die soundkarte nicht zum laufen bringe, ein weiteres kleines problem von mir)
möchte ich wissen ob es das ding auch für windows gibt und vor allem wo.
Also dann bis zur nächsten frage, oder biss ich auch mal ne antwort zum besten geben kann.
[Diese Nachricht wurde von robert am 06. März 2000 editiert.]
Lieber DrGonzo,
auch wenn mir persönlich das Bild gefallen hat und ich auch nicht sehr viel von M$ oder Mr. Gaids halte, aber dies hier zu posten ist nicht ok!!!
Auch wenn es nicht böse gemeint sein mag, aber dies könnte für LinuxForen sehr böse Folgen haben!
Aus diesem Grund muß ich hier Zensur walten lassen!
Schönen Gruß
Robert
Hagen,
jaaa.... jaaaa.... jaaaa....
Du hast natürlich (wieder mal) Recht! http://www.linuxforen.de/ubb/tongue.gif
Ich hab wieder einen Schnellschuß gelandet und nicht bedacht das durch das -c Komando nur ein Objekt-File erstellt wird, aber nicht geklinkt.
Und void main(void) ist eine alte (schlechte!!!) Angewohnheit!
Du hast natürlich wiederum Recht! Ein ordentliches Programm hätte zumindest noch ein exit (0) am Ende von main eingefügt!
Schönen Gruß
Robert
[Diese Nachricht wurde von robert am 06. März 2000 editiert.]
Oh sorry,
das war nicht böse gemeint!
Hagen von Tronje
06.03.00, 21:57
Hi,
> Und void main(void) ist eine alte (schlechte!!!) Angewohnheit!
> Du hast natürlich wiederum Recht! Ein ordentliches Programm
> hätte zumindest noch ein exit (0) am Ende von main eingefügt!
Und schon wieder irrst Du http://www.linuxforen.de/ubb/tongue.gif
Das folgende Programm ist nach Standard korrekt:
int main(void) { }
Also, "return 0" hat main() schon eingebaut,
ich gebe es immer an, weils
schoener ausschaut und
gcc -Wall
sonst (zu unrecht) meckert.
[ g++ tut dies nicht ]
Hagen
PS (Auszug aus c9x-draft)
5.1.2.2.1 Program startup
[#1] The function called at program startup is named main.
The implementation declares no prototype for this function.
It shall be defined with a return type of int and with no
parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv,
though any names may be used, as they are local to the
function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent; or in some other implementation-defined
manner.
[Diese Nachricht wurde von Hagen von Tronje am 06. März 2000 editiert.]
Hagen von Tronje
07.03.00, 03:51
Hi,
> möchte ich wissen ob es das ding auch für windows gibt
Na klar, WinNT hat (hatte?) doch eine Zeitlang
den TCP/IP-Stack von BSD
uebernommen.
> und vor allem wo
Oh, da fragst Du am besten unsere Win-ExpertInnen,
z. B. <FONT COLOR="#3333FF">Bernhard Koschnik</FONT>
Beim VC bzw. Borlands Builder werden ja die Funktionen
automatisch gelinkt, wenn sie auftreten.
Dann sind sie zwar noch nicht deklariert,
aber macht das bei Win einen Unterschied? http://www.linuxforen.de/ubb/smile.gif http://www.linuxforen.de/ubb/biggrin.gif
Hagen
Hagen,
ich sagte ja auch, schlechte Angewohnheit und nicht Standard, sondern ein ordentlicher Programmierer würde dies WENIGSTENS machen!
Schönen Gruß
Robert
Bernhard Koschnick
08.03.00, 02:11
<FONT COLOR="#3333FF">Hallo Hagen</FONT>
Danke für die Blumen. Aber um Spezialist zu werden, war die Zeit zu kurz. BG hat seine Lizenzpolitik und die "Versteck"-Techniken schon ziemlich weit unten im Basisbereich angesetzt. Ein paar Einstiegsbücher, eine Weile in einer handfesten Hacker-Runde, und Du siehst nicht nur den Horizont. Du könntest ihn nur mit viel Geld überklettern. Erfahrene Spezialisten sind an verschiedenen Punkten nicht weiter gekommen, an denen es gerade erst beginnt, interessant zu werden. Wer will z.B. ein Wordprozessing ohne Seitenformatierung? Usw. Die armen Teufel wühlen sicher immer noch auf dieser Plattform rum.
> Beim VC bzw. Borlands Builder werden ja die Funktionen automatisch gelinkt,
> wenn sie auftreten. Dann sind sie zwar noch nicht deklariert,
Sprichst Du aus Erfahrung? Bereits der Kompiler meutert, wenn die Deklaration nicht vorher oder doppelt erfolgte. Die nervigsten Error sind Linker-Error, weil die Fehlermeldungen zu unspezifisch sind. Aber wenn der die "Knotentechnik" nicht richtig beherrscht, braucht sich mensch nicht über spontane Aufhänger in genügend professionellen Progs zu wundern.
> und vor allem wo
Nö, leider auch keine Ahnung. Hab mich mit anderen Sachen befasst...
...So, und jetzt gib mir endlich das Arbeitsumfeld für meine Qt 2. Langsam geht mir das "wöchentliche Staubwischen" auf den Keks. Ich will endlich rausfinden, was das Teilchen kann http://www.linuxforen.de/ubb/biggrin.gif .
Gruss und viele gute Hacks
Bernhard
mail: Omega-X@t-online.de
URL: http://home.t-online.de/home/Omega-X/home.htm
Hagen von Tronje
08.03.00, 06:07
Hi Bernhard,
beim gcc ist es ja so, dass er nur die glibc
automatisch linkt, die math-Bibliothek z. B.
muss Du haendisch dazulinken, wenn
Du mathe. Funktionen benutzt.
Das ist bei BD/M$ schon komfortabler.
Aber mich wundert, warum Du noch nicht losgehackt hast?
Warum wartest Du auf KDE 2.0??
Qt2 ist hier:
ftp://ftp.troll.no/qt/source/qt-2.0.2.tar.gz
und Kdevelop 1.1 hast Du schon!
Warum noch zoegern?
Hagen
Hallo,
diese frage geht an Bernhard.
Ich hab nur den Bcb standart. Dort fehlt die scktcomp unit in der die socket sachen drin sind. Da ich ein sehr armer schüler bin kann ich mir nichts teureres leisten um unter windows zu programmieren. Kanst du mir sagen ob es eine bibliothek gibt die umsonst ist und die mir da abhilfe schafen könnte, und natürlich wos die gibt.
Die frage geht an Hagen,
die unix passwd dateien werden doch mit DES verschlüsselt, oder?
Hagen von Tronje
09.03.00, 01:03
Hi,
> die unix passwd dateien werden doch mit DES verschlüsselt, oder?
Ja.
Genauer: Jein http://www.linuxforen.de/ubb/wink.gif
Korrekt: nein!
Also, die unix passwd dateien (/etc/passwd)
ist ASCII und gar nicht verschluesselt.
Du meinst die Passwoerter selbst http://www.linuxforen.de/ubb/wink.gif
Das DES ist wird ja durch den salt 'erweitert',
siehe
man crypt
(oder noch besser)
die Sourcen selbst.
Und heute hat mensch ja PAM,
kann also auch laengere Passwoerter als 8 Zeichen haben bei Bedarf.
Hagen
[Diese Nachricht wurde von Hagen von Tronje am 09. März 2000 editiert.]
Bernhard Koschnick
09.03.00, 02:28
<FONT COLOR="#3333FF">Hallo Hagen</FONT>
Ich hab die Qt2 seit dem SuSE 6.2-Start. Verschiedene Diskussionen hab ich so verstanden, als wäre Qt2 zwar parallel installierbar aber erst mit KDE 2.0 nutzbar. Ich meine, das ist sogar konkret so gesagt worden. Hagen, Deine echten Insider-Infos sind mit Dank gar nicht aufzuwiegen http://www.linuxforen.de/ubb/cool.gif . -- Vor lauter "nervösen" Hackerfingern hab ich doch glatt gar nicht vorhandene Zeit gestreckt, indem ich diese vielleicht gar nicht sonderlich nützliche Infosammlung gestartet habe. Da sollten eigentlich in erster Linie Quelltextfragmente drinstehen. -- Egal. "Der" Kismet wird wissen, warum "er" das so eingerichtet hat.
Ich Dank Dir
<FONT COLOR="#3333FF">Hallo DrGonzo</FONT>
Leider. Du weisst, alles was "Schlüssel" ist, wird in der Lizenzenwelt teuer gehandelt. Man kommt an so manches dran. Aber grad bei Bibliotheken wirst Du kein Glück haben http://www.linuxforen.de/ubb/frown.gif . Nimm zum Trost: Ich hab auch nur BCB3 Standard. - Und Vorsicht vor bei CD's im Handel! Grad, was sehr preiswert scheint, ist oft Uralt-billig-zusammengestoppelte-16bit-Software. Ich geb Dir mal die URL einer sehr leistungsstarken Usergruppe. Auch aus Privatinitiative entstanden, genau wie unsere Super-Foren. Allerdings ein Abo-Forum mir der ewigen Text-Klickerei. Es gibt dort auch weitere Spezialforen. http://www.borland.com/newsgroups/borland.public.cppbuilder.vcl . (Hast Du die Url noch nicht rausgefunden? Schneller kann mensch kaum lernen.)
Aber warum willst Du nicht wirkliche Hacks auf stabiler Plattform kreieren? Wenn Hagen was zu mir gesagt hat, brauchst Du Dir doch nicht die Ohren verstopfen http://www.linuxforen.de/ubb/biggrin.gif . KDE hast Du doch auch. Damit hast Du ein GUI-Enviroment, das gar nicht so weit vom Gewohnten weg ist. Kdevelop ist zwar noch Beta. Aber ich glaube, dass das niemand wissen will. Es ist sogar profigeeignet. In Deiner Distri, im Handbuch und in der Linux Info Sammlung findest Du alles, was Du zunächst mal brauchst. Den Rest regeln normalerweise ein paar kernige Fragethreads.
Ich hoffe, ich konnte Dir soweit machbar helfen.
Gruss
Bernhard
mail: Omega-X@t-online.de
URL: http://home.t-online.de/home/Omega-X/home.htm
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.