cygwin g++ Linker ne trouve pas de bibliothèque partagée

J'ai été la création d'une bibliothèque. Quand je compile comme une bibliothèque statique, il fonctionne très bien. Maintenant, je veux le transformer en une bibliothèque partagée. La bibliothèque est créé et placé dans le bon endroit, mais quand j'essaie de compiler le code client, le lien entre la phase dit qu'il ne peut pas trouver la bibliothèque.

J'ai déjà essayé de le renommer al ou dylib mais ça n'aide pas non plus. Quand j'ai mis le drapeau-v sur le lien, je peux voir que mon chemin de la bibliothèque est là. J'ai aussi essayé des chemins différents. J'ai utilisé un chemin d'accès relatif, mais même avec un chemin d'accès complet il ne le trouve pas.

Le Makefile à partir de la bibliothèque:

.SUFFIXES:
.SUFFIXES: .o .cpp
.SUFFIXES: .o .d
CC := g++
LNK:= g++
CXXFLAGS_RELEASE    = -fPIC -shared -O2 -Wall -fmessage-length=0
CXXFLAGS_DEBUG      = -fPIC -shared -g -Wall -fmessage-length=0 -D _DEBUG
CXXFLAGS =  $(CXXFLAGS_DEBUG)
OBJDIR:=        obj
SRCDIR:=        src
HDIR:=          include
INCLUDE_PATHS:= -Iinclude -Iinclude/interfaces -Iinclude/support
CPP_FILES := propertyfile/propertyfile.cpp \
propertyfile/propertyitem.cpp \
propertyfile/propertyfactory.cpp \
helper/string_helper.cpp
OBJ :=      $(patsubst %.cpp,$(OBJDIR)/%.o, $(CPP_FILES))
SRC :=      $(patsubst %.cpp,$(SRCDIR)/%.o, $(CPP_FILES))
LIBS:=      
TARGET:=    libsupport.so
all:    $(TARGET)
$(TARGET):  $(OBJ)
$(LNK) -o $(TARGET) $(OBJ) -shared  
@cp $(TARGET) ../lib
@cp -r include ..
clean:
rm -f $(OBJ) $(ASM) $(TARGET)
-include $(patsubst %.cpp,$(OBJDIR)/%.d, $(CPP_FILES))
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(OBJDIR)/%.d 
@mkdir -p `dirname $@`
$(CC) $(CXXFLAGS) -c $< -o $@ $(INCLUDE_PATHS)
$(OBJDIR)/%.d: $(SRCDIR)/%.cpp 
@mkdir -p `dirname $@`
$(CC) $(CXXFLAGS) -MM -MT $@ -MF $(OBJDIR)/$*.d -c $< $(INCLUDE_PATHS)

Et voici le Makefile pour l'application:

.SUFFIXES:
.SUFFIXES: .o .cpp
CC := g++
LD := g++
CXXFLAGS_RELEASE    = -O2 -Wall -fmessage-length=0
CXXFLAGS_DEBUG      = -g -Wall -fmessage-length=0 -D _DEBUG
CXXFLAGS =  $(CXXFLAGS_DEBUG)
OBJDIR:=        obj
SRCDIR:=        src
INCLUDE_PATHS:= -Iinclude -I../include
LIBS:=      -L /cygdrive/d/src/c/lib -lsupport
CPP_FILES := nohupshd.cpp \
daemon.cpp \
task.cpp
OBJ :=      $(patsubst %.cpp,$(OBJDIR)/%.o, $(CPP_FILES))
SRC :=      $(patsubst %.cpp,$(SRCDIR)/%.o, $(CPP_FILES))
TARGET:=    nohupshd
all:    $(TARGET)
$(TARGET):  $(OBJ)
$(LD) -o $(TARGET) $(OBJ) $(LIBS)
clean:
rm -f $(OBJ) $(ASM) $(TARGET)
-include $(patsubst %.cpp,$(OBJDIR)/%.d, $(CPP_FILES))
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(OBJDIR)/%.d 
@mkdir -p `dirname $@`
$(CC) $(CXXFLAGS) -c $< -o $@ $(INCLUDE_PATHS)
$(OBJDIR)/%.d: $(SRCDIR)/%.cpp 
@mkdir -p `dirname $@`
$(CC) $(CXXFLAGS) -MM -MT $@ -MF $(OBJDIR)/$*.d -c $< $(INCLUDE_PATHS)

OriginalL'auteur Devolus | 2013-04-22