ducbueno Posted December 22, 2014 Report Share Posted December 22, 2014 Hello, I'm facing some porblems in using SystemC Verifcation Library, my codes just don't compile. I'm using Ubuntu 14.04 (64 bits) and I followed the instructions on the INSTALL text file that comes with de SCV package. I used: ../configure prefix=/usr/local/scv-2.0.0 with-systemc=/usr/local/systemc-2.3.1 (I've created the /usr/loca//scv-2.0.0 beforehand) After the configuration: make & sudo make install The installation finishes without errors. The problems start when I try to use the library in codes. I add to my codes "#include<scv.h>" and add my makefiles looks like this: CC = g++INCDIR = -I. -I$(SYSTEMC)/include -I$(SCV)/includeLIBDIR = -L. -L$(SYSTEMC)/lib-linux64 -L$(SCV)/lib-linux64LIBS = -lsystemc -lscv -lmCFLAGS = -O2 -Wall -DDEBUG_SYSTEMCTARGET = verification.xSRCS = top.cppOBJS = $(SRCS:.cpp=.o)all: $(TARGET)$(TARGET): $(OBJS) $(CC) -o $@ $(LIBDIR) $(LIBS) $(OBJS).cpp.o: $(CC) $(CFLAGS) $(INCDIR) -c $<clean: @rm -f *.o $(TARGET) Obs.: the environment variable SCV is previously set Then when I run the make command I get the following (not the full output): top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x210): undefined reference to `_scv_extension_util::get_dynamic_data()'top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x218): undefined reference to `_scv_extension_rand_char::updated()'top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x220): undefined reference to `_scv_extension_rand_char::uninitialize()'top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x228): undefined reference to `_scv_extension_rand_char::initialize() const'top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x230): undefined reference to `_scv_extension_rand_char::is_initialized() const'top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x238): undefined reference to `_scv_extension_callbacks_char::remove_cb(int)' top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x260): undefined reference to `_scv_extension_rand_char::generate_value_()'collect2: error: ld returned 1 exit statusmake: *** [verification.x] Error 1The error seems to come from a library linking problem, but to me it looks like the SCV libraries are linked correctly. Does anyone knows what is going on? Thanks in advance, Eduardo. Quote Link to comment Share on other sites More sharing options...
Philipp A Hartmann Posted December 22, 2014 Report Share Posted December 22, 2014 The link order is incorrect. The dependencies are resolved from right to left. Your Makefile should say: # list SCV before SystemC LIBS = -lscv -lsystemc -lm # local objects first, then the required libraries $(TARGET): $(OBJS) $(CC) -o $@ $(LIBDIR) $(OBJS) $(LIBS) As a side note: For C++ applications, you should prefer the variables CXX (for the C++ compiler) and CXXFLAGS (for the compiler flags). CC and CFLAGS are intended for C projects. Secondly, I would recommend not to define DEBUG_SYSTEMC in user code. hth, Philipp David Black, maehne and ducbueno 3 Quote Link to comment Share on other sites More sharing options...
ducbueno Posted December 23, 2014 Author Report Share Posted December 23, 2014 Thank you a lot Philipp! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.