Seite 1 von 2

MinGW Anfängerfrage

Verfasst: Mi Okt 30, 2013 2:36 am
von koax
Hallo!

Ich versuche mich gerade im Umgang mit MinGW und habe ein Problem beim Compilieren eines Beispielquelltextes.
Undzwar habe ich mir libssh runtergeladen und wollte ein Example durchlaufen lassen, leider wird mir vor jede Funktion die Libssh mitbringt ein __imp_ Präfix angehangen und der Compiler sagt dann das er die Funktion nicht kennt.

Auf einer Seite habe ich gelesen das gcc eine Library nur als diese erkennt, wenn auch lib... davorsteht, auch das ändert leider nichts am Problem.

Ich hoffe jemand hat einen Tip.
C:\MinGW\SSH_test>gcc -LC:\MinGw\libssh-0.5.0\lib -LC:\MinGW\libssh-0.5.0\bin -IC:\MinGW\libssh-0.5.0\include example_ssh.c -o test.exe C:\MinGW\libssh-0.5.0\lib\SSH.lib
cygwin warning:
MS-DOS style path detected: C:\MinGW\libssh-0.5.0\lib\SSH.lib
Preferred POSIX equivalent is: /cygdrive/c/MinGW/libssh-0.5.0/lib/SSH.lib
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.h ... -pathnames
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x21): undefined reference to `__imp_ssh_is_server_known'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x21): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp_ssh_is_server_known'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x38): undefined reference to `__imp_ssh_get_pubkey_hash'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x38): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp_ssh_get_pubkey_hash'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0xc0): undefined reference to `__imp_ssh_print_hexa'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0xc0): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp_ssh_print_hexa'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x1b1): undefined reference to `__imp_ssh_get_hexa'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x1b1): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp_ssh_get_hexa'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x27b): undefined reference to `__imp_ssh_write_knownhost'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x27b): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp_ssh_write_knownhost'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x2cd): undefined reference to `__imp_ssh_get_error'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x2cd): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp_ssh_get_error'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x333): undefined reference to `__imp_ssh_new'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x333): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp_ssh_new'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x364): undefined reference to `__imp_ssh_options_set'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x364): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp_ssh_options_set'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x374): undefined reference to `__imp_ssh_connect'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x374): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp_ssh_connect'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x38d): undefined reference to `__imp_ssh_get_error'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x38d): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp_ssh_get_error'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x3bb): undefined reference to `__imp_ssh_free'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x3bb): additional relocation overflows omitted from the output
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x3e5): undefined reference to `__imp_ssh_disconnect'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x3f5): undefined reference to `__imp_ssh_free'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x42e): undefined reference to `__imp_ssh_userauth_password'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x447): undefined reference to `__imp_ssh_get_error'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x475): undefined reference to `__imp_ssh_disconnect'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x485): undefined reference to `__imp_ssh_free'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x4ab): undefined reference to `__imp_ssh_disconnect'
/cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o:example_ssh.c:(.text+0x4bb): undefined reference to `__imp_ssh_free'
/usr/lib/gcc/x86_64-pc-cygwin/4.8.1/../../../../x86_64-pc-cygwin/bin/ld: /cygdrive/c/Users/brf24139/AppData/Local/Temp/cc5n15Y3.o: bad reloc address 0x210 in section `.rdata'
/usr/lib/gcc/x86_64-pc-cygwin/4.8.1/../../../../x86_64-pc-cygwin/bin/ld: final link failed: Invalid operation
collect2: error: ld returned 1 exit status

Re: MinGW Anfängerfrage

Verfasst: Mi Okt 30, 2013 8:01 am
von cloidnerux
Hallo und Willkommen im Forum :D

Code: Alles auswählen

cygwin warning:
Ich habe so das Gefühl, dass das kein MinGW ist, sondern ein gcc unter cygwin?
Ich denke es fehlen dir zudem die folgenden Librarys:

Code: Alles auswählen

C:\MinGW\libssh-0.5.0\lib\SSH.lib 
C:\MinGW\libssh-0.5.0\bin\ssh.dll 
Mit freundlichen Grüßen

cloidnerux

Re: MinGW Anfängerfrage

Verfasst: Do Okt 31, 2013 12:19 am
von koax
Klasse !

Ich habe cygwin aus den Path environments genommen und nur mingw drin gelassen und nun kamen keine imp-Meldungen, danke!
Da sitze ich seit Wochen an dem Problem und dann war es cygwin... :evil:

Re: MinGW Anfängerfrage

Verfasst: Do Okt 31, 2013 10:25 am
von Xin
koax hat geschrieben:Klasse !

Ich habe cygwin aus den Path environments genommen und nur mingw drin gelassen und nun kamen keine imp-Meldungen, danke!
Da sitze ich seit Wochen an dem Problem und dann war es cygwin... :evil:
Wenn Du dir unsicher bist, welcher gcc verwendet wird, kannst Du mit 'which gcc' unter Linux und MacOS und mit 'where gcc' den Pfad unter Windows.

Re: MinGW Anfängerfrage

Verfasst: So Nov 03, 2013 10:01 pm
von koax
Hallo Xin,

Die testanwendung konnte ich dank dir nun erfolgreich erstellen, beim Starten dieser habe ich nun ein weiteres Problem, LIBEAY32.dll kann nicht gefunden werden. Nach kurzer Recherche sollte ich keine runterladen sondern sollte diese benutzen die mit dabei war(bei openssl-Nutzern), leider war keine bei libssh mit dabei.

was nun?

gruß

Re: MinGW Anfängerfrage

Verfasst: So Nov 03, 2013 10:14 pm
von Xin
koax hat geschrieben:Die testanwendung konnte ich dank dir nun erfolgreich erstellen, beim Starten dieser habe ich nun ein weiteres Problem, LIBEAY32.dll kann nicht gefunden werden. Nach kurzer Recherche sollte ich keine runterlasen sondern sollte diese benutzen die mit dabei war(bei openssl-Nutzern), leider war keine bei libssh mit dabei.
Such mal Deinen Rechner nach der DLL durch.

Ich gehe mal davon aus, dass Du die Entwicklerversion heruntergeladen hast. Eventuell musst Du die Library selbst erstellen.
Hier kann ich Dir aus eigener Erfahrung aber nicht weiterhelfen, weil ich die libssh noch nicht verwendet habe. Ich kenne das nur von der libffi, die ich unter Windows ebenfalls erst selbst erstellen musste.

Re: MinGW Anfängerfrage

Verfasst: So Nov 03, 2013 10:26 pm
von koax
Die Lib habe ich 7 mal verteilt bei verschiedene Programme auf dem PC, ich gehe davon aus ich kann diese nicht einfach kopieren und benutzen?

ich denke nicht das ich eine Entwicklerversion habe gcc 4.8.1
e:\Programme\MinGW>gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=e:/programme/mingw/bin/../libexec/gcc/mingw32/4.8.1/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.8.1/configure --prefix=/mingw --host=mingw32 --build=mingw32 --without-pic --enable-shared --enable-static --with-gnu-ld --enable-lto --enable-libssp --disable-multilib --enable-languages=c,c++,fortran,objc,obj-c++,ada --disable-sjlj-exceptions --with-dwarf2 --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific
-runtime-libs --with-gmp=/usr/src/pkg/gmp-5.1.2-1-mingw32-src/bld --with-mpc=/usr/src/pkg/mpc-1.0.1-1-mingw32-src/bld --with-mpfr= --with-system-zlib --with-gnu-as --enable-decimal
-float=yes --enable-libgomp --enable-threads --with-libiconv-prefix=/mingw32 --with-libintl-prefix=/mingw
Thread model: win32
gcc version 4.8.1 (GCC)
woher soll ich wissen was in die Lib gehört?

Re: MinGW Anfängerfrage

Verfasst: So Nov 03, 2013 10:38 pm
von cloidnerux
Die Lib habe ich 7 mal verteilt bei verschiedene Programme auf dem PC, ich gehe davon aus ich kann diese nicht einfach kopieren und benutzen?
Zu deiner Ausführbaren Datei kopieren und schauen was passiert ;)

Re: MinGW Anfängerfrage

Verfasst: So Nov 03, 2013 10:54 pm
von Xin
koax hat geschrieben:Die Lib habe ich 7 mal verteilt bei verschiedene Programme auf dem PC, ich gehe davon aus ich kann diese nicht einfach kopieren und benutzen?
Das kannst Du ausprobieren, wie cloidnerux beschrieben hat.
koax hat geschrieben:ich denke nicht das ich eine Entwicklerversion habe
...
woher soll ich wissen was in die Lib gehört?
Ich weiß ja nicht, wo Du die libssh her hast. Die Headerfiles wirst Du ja auch irgendwoher haben.
Ich gehe also davon aus, dass da auch Quellcodes auch irgendwo hast und es dort ein Makefile gibt.

Re: MinGW Anfängerfrage

Verfasst: So Nov 03, 2013 11:11 pm
von koax
jede der dlls machen einen Fehler, einige eine Speicheradresse, andere verlangen MSCVR100D.dll

libssh ist von libssh.org und ist die Version 0.5.0 dort sind die headerfiles enthalten, eine dll, eine Lib und eine pfgconfig namens libssh.pc mit der ich nicht viel anfangen kann.