[Coin-bcpdiscuss] Link problems
Carlos Eduardo de Andrade
ce.andrade at gmail.com
Tue Jan 9 13:22:24 EST 2007
Hellow,
I'm having problems to link my code. The error is
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
i.e., the linker can't find the main(). My compilation command is
g++ -g <objs> -L/home/carlos/software/coin/lib -lBcp -lOsiGlpk -lOsi
-L/usr/lib -lglpk -lCoinUtils `cat
/home/carlos/software/coin/lib/bcp_addlibs.txt` `cat
/home/carlos/software/coin/lib/osi_addlibs.txt` `cat
/home/carlos/software/coin/lib/coinutils_addlibs.txt` -o spp
I think that problem is the order of the libs. I tried many
combinations but nothing.
It's funny because BAC example works correctly, say, compile and link
correctly. My Makefile is almost identical. See you:
USER_DEFINES = -DLINUX
USER_FLAGS = -g
COINDIR = /home/carlos/software/coin
SOLVER = GLPK
USER_DEFINES += -DCOIN_USE_$(SOLVER)
EXE = spp
OBJS = \
./Member/item1d.o \
./Member/item2d.o \
./Member/compoundeditem.o \
./Member/spp.o \
./Member/SPP_user_data.o \
./Member/SPP_var.o \
./Member/SPP_init.o \
./Member/SPP_vargen_by_knapsack.o \
./Member/SPP_vargen_by_mip_solver.o \
./Member/SPP_vargen_by_combinations.o \
./Member/SPP_heuristic_gen.o \
./Member/testunit.o \
./TM/SPP_tm.o \
./TM/SPP_tm_param.o \
./LP/SPP_lp.o \
./LP/SPP_lp_branch.o \
./LP/SPP_lp_param.o \
./LP/SPP_lp_vargen.o
USER_INCDIRS = include
USER_OSI_LIBS = -lOsiGlpk
USER_SOLVER_LIBS = -L$(GLPK_LIB_DIR) -lglpk
USER_INCDIRS += $(GLPK_INC_DIR)
USER_EXTRA_LIBS =
CXX = g++
CXXFLAGS = $(USER_FLAGS)
CXXLINKFLAGS =
COININCDIR = $(COINDIR)/include
COINLIBDIR = $(COINDIR)/lib
LIBS = \
-L$(COINLIBDIR) \
-lBcp \
$(USER_OSI_LIBS) \
-lOsi \
$(USER_SOLVER_LIBS) \
-lCoinUtils \
$(USER_EXTRA_LIBS) \
`cat $(COINLIBDIR)/bcp_addlibs.txt` \
`cat $(COINLIBDIR)/osi_addlibs.txt` \
`cat $(COINLIBDIR)/coinutils_addlibs.txt`
INCLUDES = `for i in $(USER_INCDIRS) $(COININCDIR); do echo $$i | sed
-e 's/^/-I/'; done`
all: $(EXE)
.SUFFIXES: .cpp .o
$(EXE): $(OBJS)
$(CXX) $(CXXFLAGS) $(CXXLINKFLAGS) $(OBJS) $(LIBS) -o $@
.cpp.o:
$(CXX) $(CXXFLAGS) $(INCLUDES) $(USER_DEFINES) -c $< -o $@
clean:
rm -rf $(EXE) $(OBJS)
I tried to use the Makefile example, but it don't work too. Do
Somebody have an ideia?!?!
Thanks for all,
Carlos
p.s.: sorry my English
--
Carlos Eduardo de Andrade
Escola Agrotecnica Federal de Inconfidentes
Brazil
More information about the Coin-bcpdiscuss
mailing list