JVMTI 에이전트 컴파일 (OSX Snow Leopard에서 GCC 사용)
-
07-07-2019 - |
문제
Snow Leopard에서 G ++ 명령을 사용하여 JVMTI 에이전트를 구축하려고 노력하고 있으며 다음과 같은 오류가 발생합니다.
$ g++ -o agent.so -I `/usr/libexec/java_home`/include agent.cpp
정의되지 않은 기호 : "_Main", 참조 : CRT1.10.6.O LD에서 시작 : 기호를 찾지 못함 Collect2 : LD 1 종료 상태 1 종료 상태
GCC 및 C ++ 프로그래밍에 관해서는 총 초보자이므로 오류가 무엇을 의미하는지 전혀 모릅니다. 에이전트 자체는 매우 기본적입니다.
#include #include JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved) { std::cout <<"Loading aspect..." <<std::endl; return JNI_OK; }
메시지에 대한 도움은 크게 감사하겠습니다.
해결책
G ++에 제공 한 명령 줄 옵션은 공유 라이브러리가 아닌 실행 파일을 구축하려고한다고 말합니다. G ++는 귀하가 정의하지 않았다고 불평합니다 main
모든 실행 파일에는 하나가 필요하므로 기능합니다.
G ++가 라이브러리를 빌드하고 코드를 컴파일하고 조립하는 것을 알고 있도록 -C 플래그로 공유 라이브러리를 컴파일하십시오. 그러나 실행 파일에 연결하려고 시도하지 마십시오.
g++ -c -o agent.so -I `/usr/libexec/java_home`/include agent.cpp
제휴하지 않습니다 StackOverflow