link error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I make my own library using this makefile.
===================================================================
TARGET := xyDEVS
CC := g++
CFLAGS := -c -fpermissive

######################################
# use following way:
#> make "CONFIG = Debug"
#or
#> make "CONFIG = Release"
######################################
ifeq (,$(findstring Debug,$(CONFIG)))
    CFLAGS += -fPIC -O2 -DNDEBUG
    MODI =
    CONFIG = Release
else
    CFLAGS += -fPIC -g -D_DEBUG
    MODI := D
    CONFIG = Debug
endif

SRCDIR := ./
SRC := $(wildcard Dv*.cpp)
SRC := $(notdir $(SRC))

OBJDIR := ../../../Linux/Object/$(CONFIG)
OBJ := $(SRC:%.cpp=$(OBJDIR)/%.o)

LIBDIR := $(HOME)/lib/$(CONFIG)
#LIBDIR := $(HOME)/lib
SONAME := lib$(TARGET)$(MODI).so
LIB := $(LIBDIR)/$(SONAME).1.0.1
LIBSONAME := $(LIBDIR)/$(SONAME)

#INC := $(wildcard Dv*.h) $(wildcard Dv*.inl) $(wildcard Dv*.pkg)\
#       $(wildcard Dv*.mcr)
#INC := $(notdir $(INC))

BOOST = /usr/local/include/boost_1_32_0
INCDIR := ../../Include

SDKDEL := $(INC:%=$(INCDIR)/%)

$(TARGET) : $(OBJ)
	@mkdir -p $(INCDIR)
	@mkdir -p $(OBJDIR)
	@mkdir -p $(LIBDIR)
	$(CC) -shared -Wl,-soname,$(SONAME) -o $(LIB) $(OBJ) -lc
	@ln -s $(LIB) $(LIBSONAME)

clean :
	rm -f $(LIB)
	rm -f $(LIBSONAME)
	rm -f $(OBJ)
	rm -f $(SDKDEL)


$(OBJDIR)/%.o : %.cpp
	@mkdir -p $(OBJDIR)
	$(CC) -I$(INCDIR) -I$(BOOST) $(CFLAGS) $< -o $@

================================================= End of Makefile

So the library looks be created as follows
================================================================
total 900
drwxr-xr-x+ 2 MHHwang None      0 Oct 21 13:04 .
drwxr-xr-x+ 4 MHHwang None      0 Oct 21 13:08 ..
lrwxrwxrwx  1 MHHwang None     44 Oct 21 13:04 libxyDEVS.so ->
/home/MHHwang/lib/Release/libxyDEVS.so.1.0.1
-rwxr-xr-x  1 MHHwang None 867547 Oct 21 13:04 libxyDEVS.so.1.0.1
====================================================End of List
But I cannot use the library when I use this make file

 And I try make an application using xyDEVS library. I uses following makefile
============================================================
#####################################################################
# .bash_profile should contains
# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/lib/Release:$HOME/lib/Debug
# export LD_LIBRARY_PATH
#####################################################################
# use following way:
#> make "CONFIG = Debug"
#or
#> make "CONFIG = Release"
#####################################################################

.SUFFIXES : .cpp .o

TARGET := Bomb
CC := g++

ifeq (,$(findstring Debug,$(CONFIG)))
    CFLAGS := -c -O2 -DNDEBUG
    MODI =
    CONFIG = Release
else
    CFLAGS := -c -g -D_DEBUG
    MODI = D
    CONFIG = Debug
endif


LIBDIR := -L /usr/X11R6/lib -L ${HOME}/lib/$(CONFIG)
INCDIR := -I /usr/X11R6/include -I ../../../Include -I
/usr/local/include/boost_1_32_0
LIBS := -lxyDEVS$(MODI) -lpthread

$(TARGET) : $(OBJECTS)
	$(CC) $(INCDIR) $(LIBDIR) $(TARGET).cpp -o $(TARGET) $(OBJECTS) $(LIBS)

#.cpp.o:
#	$(CC) $(CFLAGS) $(INCDIR) $< -o $@
clean:
	rm -rf $(OBJECTS) $(TARGET) core
====================================================== End of makefile

But I just get this error message
======================================================
g++ -I /usr/X11R6/include -I ../../../Include -I
/usr/local/include/boost_1_32_0 -L /usr/X11R6/lib -L
/home/MHHwang/lib/Release Bomb.cpp -o Bomb  -lxyDEVS -lpthread

/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld:
cannot find -lxyDEVS
collect2: ld returned 1 exit status
make: *** [Bomb] Error 1
============================================== End of Error message

Why I got the error message when using gcc 3.4.4 but not using gcc 2.96 ?

Anybody?

MoonHo


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux