首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蓝色基因机器上的“跳过不兼容”

蓝色基因机器上的“跳过不兼容”
EN

Stack Overflow用户
提问于 2011-10-26 10:16:01
回答 1查看 1.1K关注 0票数 4

我正试着在一台蓝色基因超级计算机上构建Google Protocolbuffers和Kyoto橱柜,这是一台基于PowerPC64的机器,运行Suse Linux,gcc 4.1.2。

当我编译我的代码时,Google Protocolbuffers和Kyotocabinet都给出了“跳过不兼容”的错误。编译命令行:

g++ -g -Xlinker -zmuldefs -I/some_path/include $sourceFile -o $fileName -L/some_path/lib -lkyotocabinet -lz -lstdc++ -lrt -lpthread -lm -lc -lprotobuf -lprotoc meta.pb.cc

然后我更改了它们的安装,通过使用./configure --host=powerpc-bgp-linux,Google Protocolbuffers这次可以工作,但Kyotocabinet仍然给出如下错误:

/usr/bin/ld: skipping incompatible /some_path/lib/libkyotocabinet.so when searching for -lkyotocabinet

/usr/bin/ld: skipping incompatible /some_path/lib/libkyotocabinet.a when searching for -lkyotocabinet

/usr/bin/ld: cannot find -lkyotocabinet

collect2: ld returned 1 exit status

我查看了其中的config.status,Google Protocolbuffers有类似这样的东西

sys_lib_search_path_spec='/usr/lib/gcc/powerpc64-suse-linux/4.1.2 /usr/powerpc64-suse-linux/lib /usr/lib /lib'

显然,它知道如何找到合适的东西来使用。但是京东橱柜在config.status中没有这种设置。希望这篇文章能有所帮助。

有什么办法可以让我在BlueGene上使用京东橱柜吗?或者,我可以添加一些如上所述的代码行,告诉above在哪里可以找到正确的lib?或者你能推荐一些快速的键值存储吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-26 13:32:08

你的问题不是找京东内阁。您的问题是您所指向的库:/some_path/lib/libkyotocabinet.so是为不兼容的体系结构(大多数是链接的ppc32)构建的。

执行file -L /some_path/lib/libkyotocabinet.so,看看上面写了什么。您必须将其重新构建为与gcc默认生成的架构相同的架构。

更新:fileELF 64-bit MSB shared object, 64-bit PowerPC。但是,这是否与您的g++默认输出匹配?以下命令的输出是什么:

代码语言:javascript
复制
echo "int foo() { return 0; }" | g++ -xc++ - -c -o foo.o &&
file foo.o

我打赌上面会打印32-bit PowerPC,在这种情况下,您需要将-m64添加到命令行中。

更新2:

对这个问题有什么想法吗??

你不应该这么无助。您知道问题出在不匹配的库上,所以去解决它吧。

  1. 决定是希望最终二进制文件在32位还是64位模式下运行
  2. 在所需的位中获取或重新构建所需的所有库
  3. 生成最终二进制文件
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7898056

复制
相关文章

相似问题

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