С JVMTI я разрабатываю агент для профилирования приложений Java.Поэтому совместно используемая библиотека libagent.so компилируется.Далее я использую фреймворк Qt:
На данный момент он состоит только из этих двух исходных файлов: agent.cpp и agentserver.cpp
Однако, при запуске приложения Java с моей общей библиотекой libagent.so я получаю сообщение об ошибке: неопределенный символ: _ZTV11AgentServer (./libagent.so)
Когда я запускаю ldd, я получаю ту же зависимостьпроблема:
ldd -d libagent.so
linux-vdso.so.1 => (0x00007fffeb333000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f8b6731b000)
libm.so.6 => /lib/libm.so.6 (0x00007f8b67098000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f8b66e81000)
libc.so.6 => /lib/libc.so.6 (0x00007f8b66afe000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8b67844000)
undefined symbol: _ZTV11AgentServer (./libagent.so)
Моя текущая команда компиляции:
g++ $(CXXFLAGS) -fPIC -shared -o libagent.so $(INCPATH) ../src/agent.cpp ../src/agentserver.cpp
Где $ (CXXFLAGS) равно -m64 -pipe -O2 -Wall -W -D_REENTRANT $ (DEFINES)
, где $ (DEFINES) равно -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
, где $ (INCPATH) - -I / home / konrad / qkstk-64 -I ../ src -I / home / konrad / qtsdk-2010.05 / qt / include / QtCore -I / home / konrad / qtsdk-2010.05 / qt / include / QtNetwork -I / home / konrad / qtsdk-2010.05/ qt / include / QtGui -I / home / konrad / qtsdk-2010.05 / qt / include -I / usr / lib / jvm / java-6-openjdk / include -I / usr / lib / jvm / java-6-openjdk/ включить / linux -I.-Я.-I ../ src -I.
Я потратил некоторое время на изучение этой проблемы, но никто не решил эту ошибку.
Это код заголовка agentserver.cpp: agentserver.h