代码之家  ›  专栏  ›  技术社区  ›  ROKIM

PNaCl&gtestpnacl ld:不兼容的对象文件(X8664!=X8632)

  •  0
  • ROKIM  · 技术社区  · 8 年前

    我是一个新手,请帮助我。。。

    pthreadpool (要求: NNPACK )与 忍者 在我的Ubuntu 14.04 64位。 Google PNaCl(Portable Native Client) 谷歌测试 ,我安装了这两个。

    我跑完 python./configure.py 在pthreadpool根目录中, 它生成了一个文件 build.ninja :

    pnacl_toolchain_dir = $nacl_sdk_dir/toolchain/linux_pnacl
    pnacl_cc = $pnacl_toolchain_dir/bin/pnacl-clang
    pnacl_cxx = $pnacl_toolchain_dir/bin/pnacl-clang++
    pnacl_ar = $pnacl_toolchain_dir/bin/pnacl-ar
    pnacl_finalize = $pnacl_toolchain_dir/bin/pnacl-finalize
    pnacl_translate = $pnacl_toolchain_dir/bin/pnacl-translate
    pnacl_sel_ldr = $nacl_sdk_dir/tools/sel_ldr.py
    cflags = -std=gnu11
    cxxflags = -std=gnu++11
    optflags = -O3
    rule cc
      command = $pnacl_cc -o $out -c $in -MMD -MF $out.d $optflags $cflags $
          $includes
      description = CC[PNaCl] $descpath
      depfile = $out.d
      deps = gcc
    rule cxx
      command = $pnacl_cxx -o $out -c $in -MMD -MF $out.d $optflags $cxxflags $
          $includes
      description = CXX[PNaCl] $descpath
      depfile = $out.d
      deps = gcc
    rule ccld
      command = $pnacl_cc -o $out $in $libs $libdirs $ldflags
      description = CCLD[PNaCl] $descpath
    rule cxxld
      command = $pnacl_cxx -o $out $in $libs $libdirs $ldflags
      description = CXXLD[PNaCl] $descpath
    rule ar
      command = $pnacl_ar rcs $out $in
      description = AR[PNaCl] $descpath
    rule finalize
      command = $pnacl_finalize $finflags -o $out $in
      description = FINALIZE[PNaCl] $descpath
    rule translate
      command = $pnacl_translate -arch $arch -o $out $in
      description = TRANSLATE[PNaCl] $descpath
    rule run
      command = $pnacl_sel_ldr $in
      description = RUN[PNaCl] $descpath
      pool = console
    rule install
      command = install -m $mode $in $out
      description = INSTALL $out
    build /home/rokim/NNPACK/third-party/pthreadpool/build/pthreadpool.c.bc: cc $
        /home/rokim/NNPACK/third-party/pthreadpool/src/pthreadpool.c
      descpath = pthreadpool.c
      includes = -I$nacl_sdk_dir/include $
          -I/home/rokim/NNPACK/third-party/pthreadpool/include $
          -I/home/rokim/NNPACK/third-party/pthreadpool/src
    build $
        /home/rokim/NNPACK/third-party/pthreadpool/artifacts/libpthreadpool.a: $
        ar /home/rokim/NNPACK/third-party/pthreadpool/build/pthreadpool.c.bc
      descpath = libpthreadpool.a
    build $
        /home/rokim/NNPACK/third-party/pthreadpool/build/test/pthreadpool.cc.bc: $
        cxx /home/rokim/NNPACK/third-party/pthreadpool/test/pthreadpool.cc
      descpath = pthreadpool.cc
      includes = -I$nacl_sdk_dir/include $
          -I/home/rokim/NNPACK/third-party/pthreadpool/include $
          -I/home/rokim/NNPACK/third-party/pthreadpool/src
    build /home/rokim/NNPACK/third-party/pthreadpool/build/test/pthreadpool.bc: $
        cxxld /home/rokim/NNPACK/third-party/pthreadpool/build/pthreadpool.c.bc $
        /home/rokim/NNPACK/third-party/pthreadpool/build/test/pthreadpool.cc.bc
      libs = -lgtest
      libdirs = -L$nacl_sdk_dir/lib/pnacl/Release
      descpath = pthreadpool.bc
    build $
        /home/rokim/NNPACK/third-party/pthreadpool/artifacts/pthreadpool.pexe: $
        finalize $
        /home/rokim/NNPACK/third-party/pthreadpool/build/test/pthreadpool.bc
      descpath = pthreadpool.pexe
    build $
        /home/rokim/NNPACK/third-party/pthreadpool/artifacts/pthreadpool.nexe: $
        translate $
        /home/rokim/NNPACK/third-party/pthreadpool/artifacts/pthreadpool.pexe
      arch = x86_64
      descpath = pthreadpool.pexe
    build test: run $
        /home/rokim/NNPACK/third-party/pthreadpool/artifacts/pthreadpool.nexe
      descpath = pthreadpool.nexe
    default $
        /home/rokim/NNPACK/third-party/pthreadpool/artifacts/libpthreadpool.a $
        /home/rokim/NNPACK/third-party/pthreadpool/artifacts/pthreadpool.nexe
    build /usr/local/include/pthreadpool.h: install $
        /home/rokim/NNPACK/third-party/pthreadpool/include/pthreadpool.h
      mode = 0644
    build /usr/local/lib/libpthreadpool.a: install $
        /home/rokim/NNPACK/third-party/pthreadpool/build/pthreadpool.c.bc
      mode = 0644
    build install: phony /usr/local/include/pthreadpool.h $
        /usr/local/lib/libpthreadpool.a

    但是当我运行命令时 忍者 ,出现了错误:

    [4/6] CXXLD[PNaCl] pthreadpool.bc
    FAILED: /home/rokim/NNPACK/third-party/pthreadpool/build/test/pthreadpool.bc 
    /toolchain/linux_pnacl/bin/pnacl-clang++ -o /home/rokim/NNPACK/third-party/pthreadpool/build/test/pthreadpool.bc /home/rokim/NNPACK/third-party/pthreadpool/build/pthreadpool.c.bc /home/rokim/NNPACK/third-party/pthreadpool/build/test/pthreadpool.cc.bc -lgtest -L/lib/pnacl/Release 
    pnacl-ld: Cannot find '-lgtest'
    ninja: build stopped: subcommand failed.

    我认为这可能是路径问题,所以我把 libgtest_main.a (从Google测试生成)在/usr/lib/gtest中,并修改了 build.ninja :

    libs = -L/usr/lib/gtest -lgtest_main -lgtest

    [1/3] CXXLD[PNaCl] pthreadpool.bc
    FAILED: /home/rokim/NNPACK/third-party/pthreadpool/build/test/pthreadpool.bc 
    /toolchain/linux_pnacl/bin/pnacl-clang++ -o /home/rokim/NNPACK/third-party/pthreadpool/build/test/pthreadpool.bc /home/rokim/NNPACK/third-party/pthreadpool/build/pthreadpool.c.bc /home/rokim/NNPACK/third-party/pthreadpool/build/test/pthreadpool.cc.bc -L/usr/lib/gtest -lgtest_main -lgtest -L/lib/pnacl/Release 
    pnacl-ld: /usr/lib/gtest/libgtest_main.a: Incompatible object file (X8664 != X8632)
    ninja: build stopped: subcommand failed.

    我相信lib文件很好,因为我尝试使用g++编译test.cpp:

    g++测试。cpp-lgtest_main-lgtest-lpthread

    它成功了。

    所以我认为pnacl或我使用它的方式可能有问题。我搜索了有关pnacl和gtest的32位和64位不兼容问题,但什么也没有得到。现在我完全不知道该怎么做,因为我是一个新手。。。

    所以,请,任何帮助,想法或建议将非常感谢!

    对于Google PNaCl,我下载了nacl_sdk。压缩并解压缩到/home/rokim/nacl_sdk,我得到了 sdk_tools 胡椒粉_49 最新的

    对于Google测试,我运行 sudo apt-get安装libgtest-dev 之后 科马克 制作 我得到了 libgtest.a libgtest_main.a 然后我将它们放在/usr/lib和/usr/local/lib中。gtest include文件放在/usr/include和usr/local/include中。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Derek    8 年前

    您不能在主机系统中使用带有NaCl编译器的libgtest。您链接的所有内容都必须使用相同的(NaCl)编译器构建。因此,您希望使用pnacl clang构建libgtest,并将其与其他pnacl构建链接。