Я - Java-разработчик и собираю некоторый код C ++ для создания Shared Object для доступа к нему в Java. Я могу успешно создать свой «так» файл, но когда я загружаю его, используя Java, я получаю undefined symbol: _ZTI18TransportFormatter
ошибку. Я сделал grep для этого символа в своем коде и обнаружил, что этот символ является частью TcpFormatter.o and UdpFormatter.o
. Ниже приведен мой файл make. Пожалуйста, скажите мне, если я что-то здесь упускаю.
П.С .: Я строю это на процессоре ARM. Когда я собираю это и работаю на обычном Linux x86, у меня нет проблем.
Заранее спасибо.
LD_LIBRARY_PATH=/usr/lib/gcc/arm-linux-gnueabi/4.3.3/
JDK_HOME=/home/skolli/native/java/include
CC=gcc
CCFLAGS=-c -O2
INCLUDE_DIRS=-I$(JDK_HOME) -I$(JDK_HOME)/linux
LIBS=/usr/lib/libstdc++.so.6
OBJ= Clock.o Constants.o IpFullAddress.o IcmpFormatter.o IpHeaderFormatter.o TcpFormatter.o UdpFormatter.o IcmpEchoFormatter.o IcmpErrorFormatter.o NetworkHandler.o IcmpTransfer.o jni_util.o JniConnector.o
icmpTransfer: $(OBJ)
$(CC) $(INCLUDE_DIRS) $(LIBS) -shared -o libicmpTransfer.so $(OBJ)
Clock.o: Clock.cpp Clock.h JniConnector.h
$(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cpp
Constants.o: Constants.cpp Constants.h
$(CC) $(INCLUDE_DIRS) $(CCFLAGS) $(FLAGS) $*.cpp
IcmpFormatter.o: IcmpFormatter.cpp IcmpFormatter.h Constants.h
$(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cpp
IpHeaderFormatter.o: IpHeaderFormatter.cpp IpHeaderFormatter.h Exception.h JniConnector.h
$(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cpp
TcpFormatter.o: TcpFormatter.cpp TcpFormatter.h IpFullAddress.h IcmpFormatter.h
$(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cpp
UdpFormatter.o: UdpFormatter.cpp UdpFormatter.h IpFullAddress.h TcpFormatter.h IcmpFormatter.h
$(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cpp
IcmpEchoFormatter.o: IcmpEchoFormatter.cpp IpHeaderFormatter.h IcmpFormatter.h IpHeaderFormatter.h
$(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cpp
IcmpErrorFormatter.o: IcmpErrorFormatter.cpp IcmpErrorFormatter.h IcmpEchoFormatter.h Exception.h IpHeaderFormatter.h IpFullAddress.h Exception.h JniConnector.h
$(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cpp
IpFullAddress.o: IpFullAddress.cpp IpFullAddress.h Exception.h JniConnector.h
$(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cpp
NetworkHandler.o: NetworkHandler.cpp NetworkHandler.h Clock.h IpFullAddress.h JniConnector.h
$(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cpp
IcmpTransfer.o: IcmpTransfer.cpp IcmpTransfer.h IcmpFormatter.h IcmpEchoFormatter.h IcmpErrorFormatter.h IpHeaderFormatter.h NetworkHandler.h Clock.h TcpFormatter.h JniConnector.h UdpFormatter.h
$(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cpp
jni_util.o: /home/skolli/native/share/TaCoreLib/jni_util.c /home/skolli/native/share/TaCoreLib/jni_util.h
$(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.c
JniConnector.o: JniConnector.cpp JniConnector.h ../TaCoreLib/jni_util.h com_attune_netally_ta_corelib_IcmpPacketTransfer.h Clock.h IcmpTransfer.h
$(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cpp
clean:
-rm *.o