Problem : KDevelop kompiliert nicht

Gackt

Cadet 2nd Year
Registriert
Sep. 2005
Beiträge
23
Hallo,
Ich hab in KDevelop ein neues C++ Projekt erstellt und als Vorlage "Win32 Hallo Welt
Applikation" gewählt. Da ist der Quellcode ja schon fertig und ich muss es nur noch
kompilieren und ausführen. Wenn ich jetzt auf "Erstellen --> Datei kompilieren" klicke,
kommt die folgende Fehlermeldung:

Code:
cd '/home/Gackt/test' && CC="i586-mingw32msvc-c" CXX="i586-mingw32msvc-c++" LD="i586-mingw32msvc-ld" "/home/Gackt/test/configure" && cd '/home/Gackt/test' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -j1 
Installation der Datei -c 
checking whether build environment is sane... yes 
checking for gawk... gawk 
checking whether make sets $(MAKE)... yes 
checking for C++ compiler default output file name... 
configure: error: C++ compiler cannot create executables 
See `config.log' for more details. 
*** Beendet mit Status: 77 ***



Ich hab mich erkundigt und erfahren, dass man dafür "libstc++-devel" braucht.
Ich habs aber schon installiert, bevor ich KDevelop zum ersten mal gestartet habe.
Woran könnte es denn sonst noch liegen ?

Hier der Quellcode:


Code:
#ifdef HAVE_CONFIG_H 
#include <config.h> 
#endif 

#include <iostream> 
#include <cstdlib> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
  cout << "Hello, from Win32!" << endl; 

  return EXIT_SUCCESS; 
}




Mir fällt garnichts mehr ein, was ich noch machen könnte.
Ich wäre euch dankbar, wenn ihr mir weiterhelfen könntet.

Ahja, fast hätt ichs vergessen. Kennt ihr denn andere Entwicklungsumgebungen,
die auch so Bunt sind und schön aussehen wie KDevelop ? oder ist KDevelop
die beste Entwicklungsumgebung für Linux ?



MfG
Gackt
 
mach mal eine konsole auf und gib "g++ -v" ein. da müsste ein längerer text kommen mit welchen flags dein gcc gebaut wurde meiner sieht so aus:
Reading specs from /usr/lib/gcc-lib/i586-suse-linux/3.3.3/specs
Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --enable-languages=c,c++,f77,objc,java,ada --disable-checking --libdir=/usr/lib --enable-libgcj --with-gxx-include-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit i586-suse-linux
Thread model: posix
gcc version 3.3.3 (SuSE Linux)

(bevor blöde fragen kommen, ja dieser rechner hat ein suse-linux installiert)
wenn so was in der richtung nicht kommt, ist der g++ nicht installiert oder er ist in einen verzeichnis, welches nicht in $PATH steht.
 
Erstmal danke für dein Feedback ^^

Also, bei mir kommt folgendes:

Code:
Reading specs from /usr/lib/gcc-lib/i586-suse-linux/3.3.5/specs
Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --enable-languages=c,c++,f77,objc,java,ada --disable-checking --libdir=/usr/lib --enable-libgcj --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit i586-suse-linux
Thread model: posix
gcc version 3.3.5 20050117 (prerelease) (SUSE Linux)


Das heißt doch, dass gc++ schon drauf ist oder :/
 
Hi,

versuchst du mit Absicht ein windows Programm unter linux zu kompilieren?

Falls ja schau dir dazu Abschnitt "16 Cross-Compiling" des Kdevelop Handbuchs an, ansonsten falls du lernen willst kannst du ja mit konsole anwendungen anfangen, für guis ist es empfehlenwert ein Blick auf qt zu werfen
 
Und, was sagt die config.log dazu?

Hier mein config.log:


Code:
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by configure, which was
generated by GNU Autoconf 2.59.  Invocation command line was

  $ /home/Gackt/test/configure 

## --------- ##
## Platform. ##
## --------- ##

hostname = linux
uname -m = i686
uname -r = 2.6.11.4-21.9-default
uname -s = Linux
uname -v = #1 Fri Aug 19 11:58:59 UTC 2005

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = i686
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
hostinfo               = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /home/Gackt/bin
PATH: /usr/local/bin
PATH: /usr/bin
PATH: /usr/X11R6/bin
PATH: /bin
PATH: /usr/games
PATH: /opt/gnome/bin
PATH: /opt/kde3/bin
PATH: /usr/lib/jvm/jre/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:1539: checking for a BSD-compatible install
configure:1594: result: /usr/bin/install -c
configure:1605: checking whether build environment is sane
configure:1648: result: yes
configure:1713: checking for gawk
configure:1729: found /usr/bin/gawk
configure:1739: result: gawk
configure:1749: checking whether make sets $(MAKE)
configure:1769: result: yes
configure:2038: checking for C++ compiler version
configure:2041: i586-mingw32msvc-c++ --version </dev/null >&5
/home/Gackt/test/configure: line 2042: i586-mingw32msvc-c++: command not found
configure:2044: $? = 127
configure:2046: i586-mingw32msvc-c++ -v </dev/null >&5
/home/Gackt/test/configure: line 2047: i586-mingw32msvc-c++: command not found
configure:2049: $? = 127
configure:2051: i586-mingw32msvc-c++ -V </dev/null >&5
/home/Gackt/test/configure: line 2052: i586-mingw32msvc-c++: command not found
configure:2054: $? = 127
configure:2077: checking for C++ compiler default output file name
configure:2080: i586-mingw32msvc-c++    conftest.cc  >&5
/home/Gackt/test/configure: line 2081: i586-mingw32msvc-c++: command not found
configure:2083: $? = 127
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "test"
| #define VERSION "0.1"
| /* end confdefs.h.  */
| 
| int
| main ()
| {
| 
|   ;
|   return 0;
| }
configure:2122: error: C++ compiler cannot create executables
See `config.log' for more details.

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_env_CC_set=set
ac_cv_env_CC_value=i586-mingw32msvc-c
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_CXXCPP_set=
ac_cv_env_CXXCPP_value=
ac_cv_env_CXXFLAGS_set=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=set
ac_cv_env_CXX_value=i586-mingw32msvc-c++
ac_cv_env_F77_set=
ac_cv_env_F77_value=
ac_cv_env_FFLAGS_set=
ac_cv_env_FFLAGS_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_path_install='/usr/bin/install -c'
ac_cv_prog_AWK=gawk
ac_cv_prog_make_make_set=yes

## ----------------- ##
## Output variables. ##
## ----------------- ##

ACLOCAL='${SHELL} /home/Gackt/test/missing --run aclocal-1.9'
AMDEPBACKSLASH=''
AMDEP_FALSE=''
AMDEP_TRUE=''
AMTAR='${SHELL} /home/Gackt/test/missing --run tar'
AR=''
AUTOCONF='${SHELL} /home/Gackt/test/missing --run autoconf'
AUTOHEADER='${SHELL} /home/Gackt/test/missing --run autoheader'
AUTOMAKE='${SHELL} /home/Gackt/test/missing --run automake-1.9'
AWK='gawk'
CC='i586-mingw32msvc-c'
CCDEPMODE=''
CFLAGS=''
CPP=''
CPPFLAGS=''
CXX='i586-mingw32msvc-c++'
CXXCPP=''
CXXDEPMODE=''
CXXFLAGS=''
CYGPATH_W='echo'
DEFS=''
DEPDIR=''
ECHO='echo'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP=''
EXEEXT=''
F77=''
FFLAGS=''
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='${SHELL} $(install_sh) -c -s'
LDFLAGS=''
LIBOBJS=''
LIBS=''
LIBTOOL=''
LN_S=''
LTLIBOBJS=''
MAKEINFO='${SHELL} /home/Gackt/test/missing --run makeinfo'
OBJEXT=''
PACKAGE='test'
PACKAGE_BUGREPORT=''
PACKAGE_NAME=''
PACKAGE_STRING=''
PACKAGE_TARNAME=''
PACKAGE_VERSION=''
PATH_SEPARATOR=':'
RANLIB=''
SET_MAKE=''
SHELL='/bin/sh'
STRIP=''
VERSION='0.1'
ac_ct_AR=''
ac_ct_CC=''
ac_ct_CXX=''
ac_ct_F77=''
ac_ct_RANLIB=''
ac_ct_STRIP=''
am__fastdepCC_FALSE=''
am__fastdepCC_TRUE=''
am__fastdepCXX_FALSE=''
am__fastdepCXX_TRUE=''
am__include=''
am__leading_dot='.'
am__quote=''
am__tar='${AMTAR} chof - "$$tardir"'
am__untar='${AMTAR} xf -'
bindir='${exec_prefix}/bin'
build=''
build_alias=''
build_cpu=''
build_os=''
build_vendor=''
datadir='${prefix}/share'
exec_prefix='NONE'
host=''
host_alias=''
host_cpu=''
host_os=''
host_vendor=''
includedir='${prefix}/include'
infodir='${prefix}/info'
install_sh='/home/Gackt/test/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localstatedir='${prefix}/var'
mandir='${prefix}/man'
mkdir_p='mkdir -p --'
oldincludedir='/usr/include'
prefix='NONE'
program_transform_name='s,x,x,'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

#define PACKAGE "test"
#define PACKAGE_BUGREPORT ""
#define PACKAGE_NAME ""
#define PACKAGE_STRING ""
#define PACKAGE_TARNAME ""
#define PACKAGE_VERSION ""
#define VERSION "0.1"

configure: exit 77



versuchst du mit Absicht ein windows Programm unter linux zu kompilieren?

Nein, wenn man ein neues Projekt erstellt, kann man doch Vorlagen wählen z.B. fertige
Konsolenanwendungen (Hallo Welt) und genau das hab ich gemacht, um zu wissen, ob
KDevelop erfolgreich kompiliert. Als ich es danach kompilieren wollte, ging das nicht...
(Beendet mit Status 77)

Ich hab gestern noch alle devel Pakete installiert, die man unter "Software installieren/entfernen"
installieren kann. Es funktioniert immer noch nicht...
 
Alles was du brauchst ist in den 4 RPM-Dateien von oben, auf der URL von dir gibt es einen MingW32 fuer den gcc 2.95, und den hast du ganz sicher nicht.

MfG
 
Da muss noch was installiert werden. Da fehlt bestimmt noch was... weil es komischerweise
immer noch nicht funktioniert. So langsam werde ich es sein lassen.. es hat keinen sinn mehr..
ich versuch schon seit 3-4 tagen das zum laufen zu bringen, aber bisher ohne Erfolg..
Kennt ihr denn noch ein Weg, um in Linux C++ coden zu können ?
Ansonsten muss ich wieder Windows drauf machen...
 
Also, meiner Meinung nach ist das Problem ganz einfach, dass KDevelop den gcc, g++ und ld nicht findet bzw. unter einem falschen Namen sucht.
Sag bei dir mal "which gcc" (ohne die Anführungszeichen)
Dann sollte sowas zurückkommen wie /usr/bin/gcc.

Jetzt mach mal Folgendes (Hotfix bzw. Versuch):
cd /home/Gackt/bin
ln -s /usr/bin/gcc i586-mingw32msvc-c
ln -s /usr/bin/g++ i586-mingw32msvc-c++
ln -s /usr/bin/ld i586-mingw32msvc-ld
(in den vorigen drei Zeilen musst du natürlich für /usr/bin/... den richtigen Pfad angeben, den du von "which ..." bekommen hast)

Versuche danach nochmals, unter KDevelop zu kompilieren (eventuell musst du vorher sync aufrufen)

Schreib danach nochmal, wenn es nicht geht und was genau dann als Fehlermeldung kommt.
 
mal ne ganz blöde frage: hast du mal statt "win32 hello world" ein "hello world" genommen?(der unterschied ist enorm!)
 
Gleich ne blöde Frage hinterher: war das jetzt ein Witz?

Das macht hier nämlich überhaupt keinen Unterschied, weil er ja überhaupt nicht so weit kommt, dass das Programm überhaupt kompiliert würde.
 
wieso soll das ein witz sein? es ist ein krasser unterschied ob man per crosscompiler versucht eine win32 applikation unter linux zu erstellen oder eine linux anwendung compiliert...
 
Ja schon, aber soweit ist er halt einfach noch nicht.
Im Moment haperts noch an ganz anderen Sachen, z. B. dass kein Compiler gefunden wird.
 
Warum soll das ein witz sein?

Es macht sehr wohl einen Unterschied aus ob du ein natives Programm kompilieren willst oder eins einer anderen Plattform.
Laut seinem zweiten Post ist der g++ drauf, damit sollten sich auf jeden Fall einfache Programme wie das hello world kompilieren lassen. Crosskompilierung ist hingegen nur möglich wenn der gcc mit dieser option gebaut wurde was wohl bei kaum einer distribution der Fall sein wird
 
sunny-side_down schrieb:
Also, meiner Meinung nach ist das Problem ganz einfach, dass KDevelop den gcc, g++ und ld nicht findet bzw. unter einem falschen Namen sucht.
Sag bei dir mal "which gcc" (ohne die Anführungszeichen)
Dann sollte sowas zurückkommen wie /usr/bin/gcc.

Jetzt mach mal Folgendes (Hotfix bzw. Versuch):
cd /home/Gackt/bin
ln -s /usr/bin/gcc i586-mingw32msvc-c
ln -s /usr/bin/g++ i586-mingw32msvc-c++
ln -s /usr/bin/ld i586-mingw32msvc-ld
(in den vorigen drei Zeilen musst du natürlich für /usr/bin/... den richtigen Pfad angeben, den du von "which ..." bekommen hast)

Versuche danach nochmals, unter KDevelop zu kompilieren (eventuell musst du vorher sync aufrufen)

Schreib danach nochmal, wenn es nicht geht und was genau dann als Fehlermeldung kommt.


Ich hab alles so gemacht, wie du mir sagtest. Es klappt leider immer noch nicht.
Ich bekomme folgendes :

Code:
cd '/home/Gackt/test' && CC="i586-mingw32msvc-c" CXX="i586-mingw32msvc-c++" LD="i586-mingw32msvc-ld" "/home/Gackt/test/configure" && cd '/home/Gackt/test/src' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -j1 test.lo
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for C++ compiler default output file name... 
configure: error: C++ compiler cannot create executables
See `config.log' for more details.
*** Beendet mit Status: 77 ***

Aber wenn ichs mit g++ [quelle] -o [ziel] kompiliere (Konsole), dann funktioniert es :/
 
Zuletzt bearbeitet:
sunny-side_down schrieb:
Also, meiner Meinung nach ist das Problem ganz einfach, dass KDevelop den gcc, g++ und ld nicht findet bzw. unter einem falschen Namen sucht.
Sag bei dir mal "which gcc" (ohne die Anführungszeichen)
Dann sollte sowas zurückkommen wie /usr/bin/gcc.

Jetzt mach mal Folgendes (Hotfix bzw. Versuch):
cd /home/Gackt/bin
ln -s /usr/bin/gcc i586-mingw32msvc-c
ln -s /usr/bin/g++ i586-mingw32msvc-c++
ln -s /usr/bin/ld i586-mingw32msvc-ld
(in den vorigen drei Zeilen musst du natürlich für /usr/bin/... den richtigen Pfad angeben, den du von "which ..." bekommen hast)

Versuche danach nochmals, unter KDevelop zu kompilieren (eventuell musst du vorher sync aufrufen)

Schreib danach nochmal, wenn es nicht geht und was genau dann als Fehlermeldung kommt.

Bringt dir echt viele, wenn gcc immernoch nicht weiss, wie er den Quelltext cross-Uebersetzen soll. Dafuer sind die MingW32-Libs ja da...

MfG
 
Naja... die MinGW32 libs hab ich ja alle... trotzdem funktionierts nicht :(
Das ist aber jetzt halb so schlimm, weil ich Gestern ein Linux Projekt
(kein Win32), kompiliert habe und es hat funktioniert ^^

Wenn ich ein Win32 Quellcode kompilieren möchte, muss ichs nur mit der
Konsole machen und das ist nicht so schlimm :)


Auf jeden Fall bedanke mich bei euch, weil ihr mir weitergeholfen habt und hilfreiche Tips
gegeben habt ;)

Danke, ihr seid super :)


MfG
Gackt
 
Zurück
Oben