mikrocontroller.net

Forum: Compiler & IDEs Wie Libraries in Eclipse einbinden ?


Autor: debugger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ............

Autor: Di Pi (drpepper) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LIB_NAME = libodbc32.a libws2_32.a

sollte

LIB_NAME = odbc32 ws2_32

sein.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
grrr...

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

>LIB_NAME = odbc32 ws2_32

Oliver

Autor: debugger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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}

Autor: 900ss D. (900ss)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: debugger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: 900ss D. (900ss)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: debugger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: debugger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tatsächlich,

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.