Code::Blocks Linkerfehler

Hallo zusammen!

Habe Code::Blocks 12.11 (auf Win 7 mit MinGW32) und möchte eine Console zum Laufen bringen,
kriege aber diesen Linkerfehler:

ld.exe||cannot find -llibkernel32.a libuser32.a libgdi32.a 
libadvapi32.a libshell32.a libwinmm.a libwinspool.a libcomdlg32.a 
libole32.a liboleaut32.a libuuid.a libodbc32.a libodbccp32.a 
libopengl32.a libglu32.a libglaux.a|
||=== Build finished: 1 errors, 0 warnings (0 minutes, 0 seconds) ===|

Die Libs sind fast alle von Win 2000 kopiert (ging dort so) nur die „libgdiplus.a“ (die ich auf Win 7 ergänzt habe) findet er scheinbar, da die ja nicht aufscheint.

Sind aber alle unter unter „settings/compiler/linker settings“ (nicht im Project-Menü) eingespeichert.

Habe unter „search dirs“ diese hier:
C:\Program Files\CodeBlocks\MinGW\lib
(wohl von der Installation)
Die o.a. Libs sind in diesem Ordner auch alle vorhanden.

Was fehlt da jetzt noch?
Ohne die Libs im Project-Menü nimmt er wohl die globalen („settings/compiler/linker settings“), nehme ich mal an.
Oder muss man auch im Project-Menü was einrichten?
lG
Martin

Hi,

kannst du eine Befehlszeile generieren lassen? Oder -v als zusätzliche Option des Compilers/Linkers eintragen und den erweiterten Output uns zur Kenntnis geben?

Das -llibkernel32.a sieht sehr seltsam aus. Als Option sollte stehen -lkernel32, vermisst werden sollte libkernel32.a ohne das -l

Gruß, Lutz

Hallo Lutz

kannst du eine Befehlszeile generieren lassen? Oder -v als
zusätzliche Option des Compilers/Linkers eintragen und den
erweiterten Output uns zur Kenntnis geben?

Das sollte es sein:

maliboru build log
Build started on: 05-04-2013 at 19:45.11

Build ended on: 05-04-2013 at 19:45.12
-------------- Build: Debug in maliboru (compiler: GNU GCC Compiler)---------------

mingw32-g++.exe -L"C:\Program Files\CodeBlocks\MinGW\lib" -o bin\Debug\maliboru.exe obj\Debug\theide\MyApps\maliboru\maliboru.o -v -l"libkernel32.a libuser32.a libgdi32.a libgdiplus.a libadvapi32.a libshell32.a libwinmm.a libwinspool.a libcomdlg32.a libole32.a liboleaut32.a libuuid.a libodbc32.a libodbccp32.a libopengl32.a libglu32.a libglaux.a" -l"libkernel32.a libuser32.a libgdi32.a libadvapi32.a libshell32.a libwinmm.a libwinspool.a libcomdlg32.a libole32.a liboleaut32.a libuuid.a libodbc32.a libodbccp32.a libopengl32.a libglu32.a libglaux.a"

Using built-in specs.

COLLECT_GCC=mingw32-g++.exe

COLLECT_LTO_WRAPPER=c:/program files/codeblocks/mingw/bin/…/libexec/gcc/mingw32/4.7.1/lto-wrapper.exe

Target: mingw32

Configured with: …/…/src/gcc-4.7.1/configure --build=mingw32 --enable-languages=c,c++,ada,fortran,objc,obj-c++ --enable-threads=win32 --enable-libgomp --enable-lto --enable-fully-dynamic-string --enable-libstdcxx-debug --enable-version-specific-runtime-libs --with-gnu-ld --disable-nls --disable-win32-registry --disable-symvers --disable-build-poststage1-with-cxx --disable-werror --prefix=/mingw32tdm --with-local-prefix=/mingw32tdm --enable-cxx-flags=’-fno-function-sections -fno-data-sections’ --with-pkgversion=tdm-1 --enable-sjlj-exceptions --with-bugurl=http://tdm-gcc.tdragon.net/bugs

Thread model: win32

gcc version 4.7.1 (tdm-1)

COMPILER_PATH=c:/program files/codeblocks/mingw/bin/…/libexec/gcc/mingw32/4.7.1/;c:/program files/codeblocks/mingw/bin/…/libexec/gcc/;c:/program files/codeblocks/mingw/bin/…/lib/gcc/mingw32/4.7.1/…/…/…/…/mingw32/bin/

LIBRARY_PATH=c:/program files/codeblocks/mingw/bin/…/lib/gcc/mingw32/4.7.1/;c:/program files/codeblocks/mingw/bin/…/lib/gcc/;c:/program files/codeblocks/mingw/bin/…/lib/gcc/mingw32/4.7.1/…/…/…/…/mingw32/lib/;c:/program files/codeblocks/mingw/bin/…/lib/gcc/mingw32/4.7.1/…/…/…/

COLLECT_GCC_OPTIONS=’-LC:\Program Files\CodeBlocks\MinGW\lib’ ‚-o‘ ‚bin\Debug\maliboru.exe‘ ‚-v‘ ‚-mtune=i386‘ ‚-march=i386‘

c:/program files/codeblocks/mingw/bin/…/libexec/gcc/mingw32/4.7.1/collect2.exe -Bdynamic -o bin\Debug\maliboru.exe c:/program files/codeblocks/mingw/bin/…/lib/gcc/mingw32/4.7.1/…/…/…/crt2.o c:/program files/codeblocks/mingw/bin/…/lib/gcc/mingw32/4.7.1/crtbegin.o -LC:\Program Files\CodeBlocks\MinGW\lib -Lc:/program files/codeblocks/mingw/bin/…/lib/gcc/mingw32/4.7.1 -Lc:/program files/codeblocks/mingw/bin/…/lib/gcc -Lc:/program files/codeblocks/mingw/bin/…/lib/gcc/mingw32/4.7.1/…/…/…/…/mingw32/lib -Lc:/program files/codeblocks/mingw/bin/…/lib/gcc/mingw32/4.7.1/…/…/… obj\Debug\theide\MyApps\maliboru\maliboru.o -llibkernel32.a libuser32.a libgdi32.a libgdiplus.a libadvapi32.a libshell32.a libwinmm.a libwinspool.a libcomdlg32.a libole32.a liboleaut32.a libuuid.a libodbc32.a libodbccp32.a libopengl32.a libglu32.a libglaux.a -llibkernel32.a libuser32.a libgdi32.a libadvapi32.a libshell32.a libwinmm.a libwinspool.a libcomdlg32.a libole32.a liboleaut32.a libuuid.a libodbc32.a libodbccp32.a libopengl32.a libglu32.a libglaux.a -Bstatic -lstdc++ -Bdynamic -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt c:/program files/codeblocks/mingw/bin/…/lib/gcc/mingw32/4.7.1/crtend.o
c:/program files/codeblocks/mingw/bin/…/lib/gcc/mingw32/4.7.1/…/…/…/…/mingw32/bin/ld.exe: cannot find -llibkernel32.a libuser32.a libgdi32.a libgdiplus.a libadvapi32.a libshell32.a libwinmm.a libwinspool.a libcomdlg32.a libole32.a liboleaut32.a libuuid.a libodbc32.a libodbccp32.a libopengl32.a libglu32.a libglaux.a
c:/program files/codeblocks/mingw/bin/…/lib/gcc/mingw32/4.7.1/…/…/…/…/mingw32/bin/ld.exe: cannot find -llibkernel32.a libuser32.a libgdi32.a libadvapi32.a libshell32.a libwinmm.a libwinspool.a libcomdlg32.a libole32.a liboleaut32.a libuuid.a libodbc32.a libodbccp32.a libopengl32.a libglu32.a libglaux.a

collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
2 errors, 0 warnings (0 minutes, 0 seconds)

Das -llibkernel32.a sieht sehr seltsam aus. Als Option sollte
stehen -lkernel32, vermisst werden sollte libkernel32.a ohne
das -l

Gespeichert habe ich (settings):
libkernel32.a
Das ist dieselbe Schreibweise wie bei den anderen. Aber bei der Fehlermeldung kommt wieder das
„-ll“, aber eben nur bei dem ersten Dateinamen.

Hoffe, das nützt!
Martin

Hi,

ist zwar seltsam formatiert, aber weit genug lesbar. Das funktioniert so nicht. Gib mal in das Bibliotheksfeld nur kernel32 ein. Ich finde nirgendwo in der Dokumentation, dass -l"Liste von .a Dateien" funktionieren könnte.

Hast Du dazu eine Handlungsanweisung im Netz?

Gruß, Lutz

Hallo Lutz

ist zwar seltsam formatiert, aber weit genug lesbar. Das
funktioniert so nicht. Gib mal in das Bibliotheksfeld nur
kernel32 ein.

Du meinst wohl unter „linker settings“?
Gemacht, aber das Ergebnis ist dasselbe.

Ich finde nirgendwo in der Dokumentation, dass
-l"Liste von .a Dateien" funktionieren könnte.

Hast Du dazu eine Handlungsanweisung im Netz?

Hmm, nein, aber das habe ja nicht ich gemacht.
Er fügt immer selbsttätig dieses -l dazu,
weiss nicht, warum.

Müsste nicht in der *.cbp unter „Linker“ nicht auch die Libs drin stehen?
mfG
Martin

Müsste nicht in der *.cbp unter „Linker“ nicht auch die Libs
drin stehen?

Ich habe das *.cbp bearbeitet und steht jetzt drin, so wie ich es bei einem anderen Projekt gesehen habe (beim zweiten Linker-Markup):

´

Dasselbe auch nur mit „kernel32“, aber nützt alles nichts.
Er kompiliert aber die Beispiele (templates) ohne etwas.

mfG
Martin