g++ nachinstalliert und auf der konsole nichts zu sehen



  • hola leute

    auf meinem webserver (suse 9.3) war bis jetzt nur der gcc installiert. hab heute ueber yast den g++ nachinstalliert. problem: wenn ich mit std::cout was ausgeben will, kommt da nichts. der g++ kompiliert anstandslos ohne meckern.
    kann es sein das ihm vielleicht irgendwelche umgebungsvariablen noch fehlen oder so ?
    wenn ich printf anstatt std::cout verwende, geht es gnomischerweise.

    weiß da jemand rat ?

    Meep Meep



  • std::cout <<"test"<<std::endl;

    oder flush

    mal testen.

    edit: std vergessen



  • hi elise

    mit std::endl hab ich es auch schon probiert. mit dem gleichen resultat.

    hab jetzt einfach nochmal ein kleines programm geschrieben und wollte das nun testen:

    #include <iostream>
    #include <vector>
    
    int main(int val, char *var[])
    {
       std::vector<int> vec;
       for(int i = 0;i < 10;++i)
          vec.push_back(i);
    
       std::vector<int>::const_iterator begin = vec.begin();
       std::vector<int>::const_iterator end   = vec.end();
    
       while(begin != end)
          std::cout << *begin++ << std::endl;
    
       return 0;
    }
    

    kompiliert auh einwand frei. jedoch, wenn ich die binary starten will, sagt mir bash ' command not found '.
    versteh ich nun ueberhaupt nicht mehr.

    kompiliert hab ich das programm mit :

    g++ -o vec_prog vec_prog.cpp
    

    liegt da vielleicht der fehler ?
    dateien und verzeichnisse haben jeweils 755. sollte doch wohl ausreichen oder ?

    Meep Meep



  • Rufst Du auch mit "./vec_prog" auf? "vec_prog" alleine wird nicht ausreichen, da $PATH selten "." enthält.



  • re

    nman schrieb:

    Rufst Du auch mit "./vec_prog" auf? "vec_prog" alleine wird nicht ausreichen, da $PATH selten "." enthält.

    noe, hab ich nicht. aber so wie du es sagst funktioniert es.
    frage stellt sich mir nun: warum ??
    bei anderen programmen muss ich das ja auch niht machen. warum jetzt bei meinem ?

    Meep Meep



  • Weil Dein Programm in keinem der Verzeichnisse liegt, die in $PATH stehen.

    Wenn Du Deiner Shell irgendeinen Programmnamen übergibst, dann versucht sie, dieses Programm in den Verzeichnissen, die in $PATH gelistet sind zu finden. Aus Sicherheitsgründen ist da idR das aktuelle Verzeichnis nicht drin, darum musst du den Pfad zu Programmen außerhalb der $PATH-Verzeichnisse absolut angeben.

    Ist in 1.000 FAQs beschrieben. 😉



  • das liegt daran, wie die Konsole Programme sucht. Dafür geht es die Verzeichnisse in PATH durch und schaut ob es das Programm findet. Da . (also das aktuelle Verzeichnis) (aus guten Gründen) in der Regel nicht in PATH steht, findet die Konsole das Programm eben nicht. Daher musst du eben explizit eine Pfadangabe machen. Verschieb dein Programm zB mal nach /usr/local/bin (oder /usr/bin). Dann sollte es funktionieren oder füge einfach . zu PATH hinzu oder ruf einfach das Programm wie jeder andere es auch tun würde mit ./ auf...



  • re

    im gleichen verzeichnis habe ich jedoch noch ein anderes von mir geschriebenes
    programm, hab ich mit gcc kompiliert, was ich aber nur mit dem dateinamen starten kann.
    wie kann das dann sein ?

    Meep Meep



  • (Meep Meep) schrieb:

    im gleichen verzeichnis habe ich jedoch noch ein anderes von mir geschriebenes
    programm, hab ich mit gcc kompiliert, was ich aber nur mit dem dateinamen starten kann.
    wie kann das dann sein ?

    Kann gar nicht sein.



  • re

    nman schrieb:

    (Meep Meep) schrieb:

    im gleichen verzeichnis habe ich jedoch noch ein anderes von mir geschriebenes
    programm, hab ich mit gcc kompiliert, was ich aber nur mit dem dateinamen starten kann.
    wie kann das dann sein ?

    Kann gar nicht sein.

    robert@web_server:/home/k/komports.de/public_html/cgi-bin> ls -l
    insgesamt 116
    -rwxrwxrwx  1 robert www    15 2006-05-05 22:00 DO_NOT_DELETE_THIS_FILE_WITH_FRO                                                                              NTPAGE
    -rwxr-xr-x  1 robert www  7619 2006-12-03 22:46 hallo
    -rwxr-xr-x  1 robert www   856 2006-05-07 20:21 hallo.c
    -rwxr-xr-x  1 robert www  7619 2006-12-03 21:03 hallo.cgi
    -rwxr-xr-x  1 robert www  1530 2006-12-03 21:25 main.c
    -rwxr-xr-x  1 robert www  8672 2006-12-03 22:39 main.cgi
    -rw----r--  1 robert www   125 2006-12-03 22:41 main.cpp
    -rwxr-xr-x  1 robert www  8727 2006-12-03 22:35 test
    -rwxr-xr-x  1 robert www  8727 2006-12-03 22:35 test.cgi
    -rw----r--  1 robert www    92 2006-12-03 22:34 test.cpp
    -rwxr-xr-x  1 robert www 16484 2006-12-03 23:06 vec_prog
    -rwxr-xr-x  1 robert www 16484 2006-12-03 23:02 vec_prog.cgi
    -rwxr-xr-x  1 robert www   377 2006-12-03 23:01 vec_prog.cpp
    robert@web_server:/home/k/komports.de/public_html/cgi-bin> hallo
    Content-Type: text/html
    
    <html><head>
    <title>Zeitausgabe
    </title>
    </head><body>
    Aktuelle Systemzeit: Mon Dec  4 07:00:06 2006
    
    </body></html>
    robert@web_server:/home/k/komports.de/public_html/cgi-bin> vec_prog
    -bash: vec_prog: command not found
    

    ist aber so.
    das prog 'hallo' wird gefunden und gestartet, 'vec_prog' nicht.

    Meep Meep



  • Mach mal bitte which hallo



  • re

    Bashar schrieb:

    Mach mal bitte which hallo

    /bin/hallo
    

    wie kommt das nach bin ???
    kann mich nicht erinnern das ich das mal dort hin kopiert haette. source is keiner im bin. weil da komm ich per ftp net mal hin. naja wenigstens is das geklaert und ich hab wieder was dazu gelernt.

    Meep Meep


Anmelden zum Antworten