Warum lässt sich dies nicht ausführen.

kartoffel200

kartoffel200

AMD Fanboy Since 2003
Wieso sagt er das über meine Binarydatei wenn ich sie als Root ausführen möchte ?
PHP:
 cannot execute binary file

Der Code der Datei ist
PHP:
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;

int main ()
{

cout<< "Hallo";
return 0;
system ("pause");
}

Kompiliert mit GCC per Konsole.
 
Zuletzt bearbeitet:
- Ist das binary auch per chmod auf executable gesetzt?
- Liegt das executable auf einer Partition die mit "noexec" gemountet ist?
 
using namespace std;

int main ()
{

cout<< "Hallo";
return 0;
system ("pause");
}

Das wird kompiliert ? Ohne Fehler ??
cout<< ist eine c++-memberfunktion von iostreams
Da wird es mit
Code:
g++ -o myExec myExec.cpp
schon eher hinhauen...

Was Anderes:

return 0;
system ("pause");
"pause" ist IMHO ein command.com aufruf unter windows :)
und generell solltest Du auch nix mehr ausführen, wenn Du schon die Hauptfunktion beendest (return 0;)

MfG
 
Zuletzt bearbeitet:
x0r's Vermutungen stimmen: Mit gcc kann man das gar nicht übersetzen!

Und noch ein Tip: Man sollte im Hinterkopf behalten, daß das Aufrufen von externen Befehlen aus C/C++ heraus mitunter gefährlich sein kann: Typisches Sicherheitsloch.
 
gcc kann das compilen, aber g++ ist trotzdem komfortabler.
 
Hi,

x0r's Vermutungen stimmen: Mit gcc kann man das gar nicht übersetzen!

tja, aber im Zweifelsfall fuer den Angeklagten: Er sprach ja auch von GCC, nicht von gcc, und GCC kann auch fuer die GNU Compiler Collection stehen, wovon g++ ein Teil ist. ;)

mfg,
bytepool
 
Zuletzt bearbeitet:
@kotzkroete:
Mea culpa: Der gcc C-Compiler kann es selbstverständlich übersetzen, aber es kann dann nichts mehr gelinkt werden:
Code:
$ cat make_my_day.cc
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;

int main ()
{

cout<< "Hallo";
return 0;
system ("pause");
}

$ gcc -o make_my_day make_my_day.cc
/var/tmp//ccRxYH1N.o(.text+0x19): In function `std::__verify_grouping(char const*, unsigned long, std::string const&)':
: undefined reference to `std::string::size() const'
/var/tmp//ccRxYH1N.o(.text+0x70): In function `std::__verify_grouping(char const*, unsigned long, std::string const&)':
: undefined reference to `std::string::operator[](unsigned long) const'
/var/tmp//ccRxYH1N.o(.text+0xb0): In function `std::__verify_grouping(char const*, unsigned long, std::string const&)':
: undefined reference to `std::string::operator[](unsigned long) const'
/var/tmp//ccRxYH1N.o(.text+0xdd): In function `std::__verify_grouping(char const*, unsigned long, std::string const&)':
: undefined reference to `std::string::operator[](unsigned long) const'
/var/tmp//ccRxYH1N.o(.text+0x11a): In function `main':
: undefined reference to `std::cout'
/var/tmp//ccRxYH1N.o(.text+0x11f): In function `main':
: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/var/tmp//ccRxYH1N.o(.text+0x153): In function `__static_initialization_and_destruction_0(int, int)':
: undefined reference to `std::ios_base::Init::Init()'
/var/tmp//ccRxYH1N.o(.text+0x182): In function `__tcf_0':
: undefined reference to `std::ios_base::Init::~Init()'
/var/tmp//ccRxYH1N.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
Die Iostream-Funktionen haben nunmal ihre C++-Signaturen - und die werden, auch mit Tricks nicht, von keinem C-Compiler generiert.

\begin{OT}
@bytepool: Aha, GCC -> GNU Compiler Collection, gcc -> C-Compiler; wußte ich auch noch nicht :)) .
\end{OT}
 
Zuletzt bearbeitet:
Man müsste aber die c++ stdlib noch dazu linken können.
Habe ich schon gemacht. g++ ist ja nur ein frontend für gcc ;)
 
<OT>@kotzkroete:
Ich müßte mich schon ziemlich irren, wenn das klappen sollte; wir können ja [THREAD=37380]hier[/THREAD] weitermachen. Zeig' mir mal, wie Du das gemacht hast.</OT>
 

Ähnliche Themen

String auf Konsole ausgeben

Funktion nicht gefunden

Ausführbare C-Datei von Mac OS auf Embedded Linux ausführen

Problem mit Texteingabe

deprecated conversion from string constant to ‘char*’

Zurück
Oben