首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PNaCl &gtest:不兼容的对象文件(X8664 != X8632)

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

Stack Overflow用户
提问于 2016-11-28 07:44:48
回答 1查看 106关注 0票数 0

我是这方面的新手,请帮我...T_T..。

最近,我在我的Ubuntu14.04 64位上用NNPACK构建忍者。它需要谷歌PNaCl(便携式本地客户端)Google ,我安装了两者。

在p线程池根dir中运行python ./figre.py之后,它生成一个文件build.ninja

代码语言:javascript
复制
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

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

代码语言:javascript
复制
[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.a(由Google生成)放在/usr/lib/gtest中,并修改了build.ninja

代码语言:javascript
复制
libs = -L/usr/lib/gtest -lgtest_main -lgtest

看起来忍者找到了库文件,但是出现了一个错误:

代码语言:javascript
复制
[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.

我相信库文件很好,因为我试图使用g++编译一个test.cpp:

g++ test.cpp -lgtest_main -lgtest -lpthread

而且起作用了。

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

因此,任何帮助、想法或建议都将是非常有用的!

对于Google PNaCl,我下载了nacl_sdk.zip并将其解压缩到/home/rokim/nacl_sdk,并获得了sdk_tools和pepper_49的最新版本。

对于Google,我运行sudo apt install libgtest-dev。在cmake和之后,我得到了libgtest.a和,然后将它们放入/usr/lib和/usr/local/lib,gtest包含文件被放入/usr/和usr/local/include中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-29 07:54:15

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40839331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档