Forum: Compiler & IDEs Wie Libraries in Eclipse einbinden ?


von debugger (Gast)


Lesenswert?

Hallo,
ich stehe gerade auf dem Schlauch.
Und zwar müsste ich in ein C++-Projekt unter Eclipse  für ODBC- und 
Socket-Routinen die entspechenden Bibliotheken einbinden.
Wie ich das sehe, wären das die Bibliotheken "libodbc32.a" und 
"libws2_32.a" aus dem Verzeichnis "C:/MinGW/lib/"

Die Sourcecode-Dateien werden schon komplett übersetzt, aber der Linker 
macht Probleme.

Das seltsame ist, wenn ich als LIB_DIR "../Library/Lib/" (wo ist das) 
und als LIB_NAME "odbc" als angebe, werden zumindest die ODBC-Routinen 
gefunden (von woher, ich habe für GCC gar keine Datei ODBC ?)

Hat jemand einen Tipp, wie ich die benötigten Library-Dateien inklusive 
Pfad im makefile korrekt angebe ?

D A N K E !


Ich verwende ein Makefile, das am Anfang so aussieht :

# Compiler-Einstellungen
CXX = g++
CXXFLAGS = ${FLAGWIN} ${FLAGOPTI}
CLNFLAGS =  ${FLAGLIB}

# Target-Einstellungen
TARGET_EXE = master2.exe

# benötigte Libs
#LIB_DIR = ../Library/Lib/
LIB_DIR = C:/MinGW/lib/
LIB_NAME = libodbc32.a libws2_32.a

# verschiedene Standardflags
TEMPFLAG =
FLAGOPTI = -O -O1 -O2 -march=pentium
FLAGWIN = -mwindows -mno-cygwin
FLAGLIB = -L${LIB_DIR} -l${LIB_NAME}

# die Standard-Targets
all : ${TARGET_EXE}

clean :
  rm -rf *.o

# die einzelnen Dateien
${TARGET_EXE} : ana_tele_ib.o ............

von Di P. (drpepper) Benutzerseite


Lesenswert?

LIB_NAME = libodbc32.a libws2_32.a

sollte

LIB_NAME = odbc32 ws2_32

sein.

von Oliver (Gast)


Lesenswert?

>LIB_NAME = libodbc32.a libws2_32.a

Heissen deine libs denn wirklich liblibodbc32.a und liblibws2_32.a?

Aus für Windowsnutzer unerfindlichen Gründen fügt der linker die 
Vorsilbe lib zum angegebenen Nmane selbsttätig hinzu. Wenn deine libs 
also libodbc32.a und libws2_32.a heissen, müsste die Zeile im makefile 
so lauten:

>LIB_NAME = odbc32.a ws2_32.a

Oliver

von Oliver (Gast)


Lesenswert?

grrr...

zu schnell abgeschickt, und trotzdem war Di Pi schneller und richtiger.

>LIB_NAME = odbc32 ws2_32

Oliver

von debugger (Gast)


Lesenswert?

Vielen Dank,
jetzt funktioniert es !
Die benötigten Libraries heissen "libodbc32.a" und "libws2_32.a".
Da muss man erst mal drauf kommen, dass im makefile "odbc32" und 
"ws2_32" angegeben werden muss !

Und wo ist in Eclipse eigentlich der Pfad "LIB_DIR = ../Library/Lib/" 
definiert ? (in meinem Fall ist das vermutlich der konkrete Pfad 
"C:\MinGW\lib")


Nachfolgend der Vollständigkeit halber der aktualisierte relevante 
Auszug des makefiles :

# benötigte Libs
LIB_DIR = ../Library/Lib/
LIB_NAME1 = odbc32
LIB_NAME2 = ws2_32

# verschiedene Standardflags
TEMPFLAG =
FLAGOPTI = -O -O1 -O2 -march=pentium
FLAGWIN = -mwindows -mno-cygwin
FLAGLIB = -L${LIB_DIR} -l${LIB_NAME1} -l${LIB_NAME2}

von 900ss (900ss)


Lesenswert?

Wenn du einen Makefile verwendest dann sind die Library-Angaben in 
Eclipse selber nur noch für den Eclipseeditor ( Intellisense u.s.w.). 
Das kompilieren wird dann NUR durch den Makefile gesteuert, den Eclipse 
dann nicht verwaltet. Du kannst in Eclipse dann alle Includepfade und 
Libraries aus den Projekteinstellungen entfernen und das Programm wird 
trotzdem kompiliert und gelinkt. Die schöne Unterstützung des Editors 
funktioniert dann nur nicht mehr. Erst wenn du in Eclipse ein Projekt 
ohne Makefile anlegst, dann werden die Angaben in den 
Projekteinstellungen auch für das Build verwendet.

von debugger (Gast)


Lesenswert?

Ok,

aber bei mir im makefile wird das Lib-Verzeichnis so angegeben :

LIB_DIR = ../Library/Lib/

Der Klartext-Pfad steht nirgendwo im makefile, woher weiss Eclipse dann, 
dass sich die Lib-Dateien im Verzeichnis "C:\MinGW\lib" befinden ?

von 900ss (900ss)


Lesenswert?

Eclipse muss das nicht wissen, da Eclipse den File nicht kompiliert und 
linkt sondern der Compiler/Linker unter MinGW. Eclipse ruft den 
Compiler/Linker nur auf. Damit endet die Beteiligung von Eclipse am 
kompilieren.

von debugger (Gast)


Lesenswert?

Gut,

damit verschiebt sich die Frage aber nur um eine Stufe :

Woher weiss es dann der Compiler/Linker unter MinGW ?
Gibt es da irgendwo auomatisch erzeugte ini-Dateien (ich habe da nämlich 
nichts manuell eingestellt).

Würde mich wirklich interessieren.

von Oliver (Gast)


Lesenswert?

Der Compiler/Linker findet libs, includes, und alles andere über die im 
Environent gesetzten Pfade. Tipp mal in ein Comandofenster "PATH" ein, 
da siehst du, was da alles vordefiniert ist.

Oliver

von debugger (Gast)


Lesenswert?

Tatsächlich,

die Verzeichnisse sind im Pfad eingetragen. Muss bei der Installation 
automatisch gemacht worden sein.
Alles klar und DANKE !

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.