1

I have a similar error as in this thread. I'm having an import error in Python as follows:

File "/home/cayman/multiviewer/src/analyzer/analyzer.py", line 23, in from wrapped.libraries.IpMetrics import IpMetrics ImportError: /home/cayman/multiviewer/src/analyzer/wrapped/libraries/IpMetrics.so: undefined symbol: Z15calcTimevalDiff7timevalS

Below is my makefile

MODULE_NAME=IpMetrics
CPPFLAGS=-O2 -Wall -fPIC -c -std=c++11 -I../src
CC=g++-4.9
o_dir ?= "../../wrapped/"
lib_dir := $(o_dir)libraries/

PYTHON_VERSION = 2.7
PYTHON_INCLUDE = /usr/include/python$(PYTHON_VERSION)

ifeq "$(wildcard $(/usr/lib/boost-gcc49) )" ""
    BOOST_INC = /usr/lib/boost-gcc49/include
    BOOST_LIB = /usr/lib/boost-gcc49/lib
else
    BOOST_INC = /usr/include
    BOOST_LIB = /usr/lib
endif

all:
    $(eval obj_dir=$(o_dir)objects)
    $(eval lib_dir=$(o_dir)libraries)
    $(CC) $(CPPFLAGS) -o $(obj_dir)/IpPacketMetricsBase.o ../src/IpPacketMetricsBase.cpp
    $(CC) $(CPPFLAGS) -o $(obj_dir)/IpPacketJitterDelayVariation.o ../src/IpPacketJitterDelayVariation.cpp
    $(CC) $(CPPFLAGS) -o $(obj_dir)/IpPacketJitterCumulative.o ../src/IpPacketJitterCumulative.cpp
    $(CC) $(CPPFLAGS) -o $(obj_dir)/IpPacketMetricsUtil.o ../src/IpPacketMetricsUtil.cpp
    $(CC) $(CPPFLAGS) -o $(obj_dir)/IpPacketLossMetrics.o ../src/IpPacketLossMetrics.cpp
    $(CC) $(CPPFLAGS) -o $(obj_dir)/IpPacketMetrics.o ../src/IpPacketMetrics.cpp
    $(CC) $(CPPFLAGS) -I$(PYTHON_INCLUDE) -I$(BOOST_INC) -o $(obj_dir)/boost_$(MODULE_NAME).o boost_$(MODULE_NAME).cpp


    $(CC) -shared -Wl,--export-dynamic \
    $(obj_dir)/boost_$(MODULE_NAME).o \
    $(obj_dir)/IpPacketMetricsBase.o \
    $(obj_dir)/IpPacketJitterDelayVariation.o \
    $(obj_dir)/IpPacketJitterCumulative.o \
    $(obj_dir)/IpPacketLossMetrics.o \
    $(obj_dir)/IpPacketMetrics.o \
    -lpcap -lboost_thread -L$(BOOST_LIB) -lboost_python -L/usr/lib/python$(PYTHON_VERSION)/config \
    -lpython$(PYTHON_VERSION) -o $(lib_dir)/$(MODULE_NAME).so

clean:

My software compiles and builds fine as follows:

:~/multiviewer/src/analyzer/cpp/IpMetrics$ make g++ -O2 -Wall -fPIC -c -std=c++11 -I../src -o "../../wrapped/"objects/IpPacketMetricsBase.o ../src/IpPacketMetricsBase.cpp g++ -O2 -Wall -fPIC -c -std=c++11 -I../src -o "../../wrapped/"objects/IpPacketJitterDelayVariation.o ../src/IpPacketJitterDelayVariation.cpp g++ -O2 -Wall -fPIC -c -std=c++11 -I../src -o "../../wrapped/"objects/IpPacketJitterCumulative.o ../src/IpPacketJitterCumulative.cpp g++ -O2 -Wall -fPIC -c -std=c++11 -I../src -o "../../wrapped/"objects/IpPacketMetricsUtil.o ../src/IpPacketMetricsUtil.cpp g++ -O2 -Wall -fPIC -c -std=c++11 -I../src -o "../../wrapped/"objects/IpPacketLossMetrics.o ../src/IpPacketLossMetrics.cpp g++ -O2 -Wall -fPIC -c -std=c++11 -I../src -o "../../wrapped/"objects/IpPacketMetrics.o ../src/IpPacketMetrics.cpp g++ -O2 -Wall -fPIC -c -std=c++11 -I../src -I/usr/include/python2.7 -I/usr/lib/boost-gcc49/include -o "../../wrapped/"objects/boost_IpMetrics.o boost_IpMetrics.cpp g++ -shared -Wl,--export-dynamic \ "../../wrapped/"objects/boost_IpMetrics.o \ "../../wrapped/"objects/IpPacketMetricsBase.o \ "../../wrapped/"objects/IpPacketJitterDelayVariation.o \ "../../wrapped/"objects/IpPacketJitterCumulative.o \ "../../wrapped/"objects/IpPacketLossMetrics.o \ "../../wrapped/"objects/IpPacketMetrics.o \ -lpcap -lboost_thread -L/usr/lib/boost-gcc49/lib -lboost_python -L/usr/lib/python2.7/config \ -lpython2.7 -o "../../wrapped/"libraries/IpMetrics.so

Any idea what could be wrong ?

Community
  • 1
  • 1
Joseph Wahba
  • 337
  • 2
  • 8
  • 19
  • 1
    most likely incompatible boost version while linking and running. Make sure to use same boost lib by correcting env; try `export LD_LIBRARY_PATH=/usr/lib/boost-gcc49/lib:$LD_LIBRARY_PATH`. – xosp7tom Jan 27 '17 at 18:44
  • Thanks for the suggestion. I tried to do so and did `make` but nothing changed – Joseph Wahba Jan 27 '17 at 18:49

0 Answers0