2

我正在尝试制作一个使用WebPorts 的 Perl NaCl 端口的 PNaCl应用程序,但是在链接它时出现了一个奇怪的错误。这是我试图构建的简单代码:

#include <EXTERN.h>
#include <perl.h>
#include <ppapi/cpp/instance.h>
#include <ppapi/cpp/module.h>
#include <ppapi/cpp/var.h>


namespace interp {
  PerlInterpreter *my_perl;
}

class PerlTest : public pp::Instance {
  static void perltest_init() {
    using namespace interp;

    if (my_perl == NULL) return;

    char *params[] = {"", "-e", ""};
    my_perl = perl_alloc();

    perl_construct(my_perl);
    perl_parse(my_perl, NULL, 3, params, NULL);
    PL_exit_flags |= PERL_EXIT_DESTRUCT_END;

    perl_run(my_perl);
  }

  static void perltest_destroy() {
    using namespace interp;

    perl_destruct(my_perl);
    perl_free(my_perl);
  }

  public:
    explicit PerlTest(PP_Instance instance) : pp::Instance(instance) {
      perltest_init();
    }

    virtual ~PerlTest() {
      perltest_destroy();
    }

    virtual void HandleMessage(const pp::Var &var) {
      using namespace interp;
      std::string message = var.AsString();

      if(message == "test") {
        SV* result = eval_pv("2 + 2", TRUE);
        PostMessage(pp::Var(SvNV(result)));
      }
    }
};

class PerlTestModule : public pp::Module {
  public:
    PerlTestModule() : pp::Module() {}
    virtual ~PerlTestModule() {}

    virtual pp::Instance* CreateInstance(PP_Instance instance) {
      return new PerlTest(instance);
    }
};

namespace pp {
  Module* CreateModule() {
    return new PerlTestModule();
  }
}

对于建筑:

$NACL_SDK/toolchain/linux_pnacl/bin/pnacl-clang++ test.cpp -c -I$NACL_SDK/include/ -I$WEB_PORTS/out/build/perl/perl-5.20.2/ -o test.o -O2 --pnacl-driver-verbose

$NACL_SDK/toolchain/linux_pnacl/bin/pnacl-ld -L$NACL_SDK/lib/pnacl/Release/ -L$WEB_PORTS/out/build/perl/perl-5.20.2/ $WEB_PORTS/out/build/nacl-spawn/build_pnacl/libnacl_spawn.a test.o -lppapi_cpp -lppapi -lperl -o test.pexe

但是在链接时我收到了这个神秘的错误:

/home/quartata/Downloads/nacl_sdk/pepper_49/toolchain/linux_pnacl/bin/le32-nacl-ld.gold: internal error in target, at ../../../src/binutils/gold/parameters.h:105

链接到 Perl 时,我显然做错了什么,但我不知道是什么。有谁知道这意味着什么?

4

0 回答 0