【问题标题】:Compiling JVMTI agent (using GCC, on OSX Snow Leopard)编译 JVMTI 代理(使用 GCC,在 OSX Snow Leopard 上)
【发布时间】:2010-11-28 01:57:58
【问题描述】:

我正在尝试在 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 个退出状态

在 gcc 和 C++ 编程方面,我完全是新手,所以我不知道这个错误意味着什么。代理本身非常基础:

#包括 #包括 JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved) { std::cout

非常感谢您对消息的任何帮助。

【问题讨论】:

    标签: java c++ macos gcc osx-snow-leopard


    【解决方案1】:

    您提供给 g++ 的命令行选项告诉它您正在尝试构建可执行文件,而不是共享库。 g++ 抱怨您没有定义 main 函数,因为每个可执行文件都需要一个。

    使用 -c 标志编译您的共享库,以便 g++ 知道构建一个库,即编译和组装您的代码,但不要尝试将其链接到可执行文件中。

    g++ -c -o agent.so -I `/usr/libexec/java_home`/include agent.cpp
    

    【讨论】:

      猜你喜欢
      • 2010-12-01
      • 2011-01-18
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多