gpt4 book ai didi

architecture - "Skipping incompatible"在 Blue Gene 机器上

转载 作者:行者123 更新时间:2023-12-04 05:04:03 26 4
gpt4 key购买 nike

我正在尝试在 Blue Gene super 计算机上构建 Google Protocolbuffers 和 Kyotocabinet,这是一台基于 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'
显然它知道如何找到合适的东西来使用。但是Kyotocabinet 在config.status 中没有这种设置。希望这个提示会有所帮助。

有什么解决方案可以让我在 BlueGene 上使用京都内阁?或者我可以添加一些上面提到的行来告诉京都内阁在哪里可以找到正确的库?或者你能推荐一些快速的键值存储吗?

最佳答案

你的问题不在于找到Kyotocabinet。您的问题是您指向的库:/some_path/lib/libkyotocabinet.so是为不兼容的架构而构建的(最常见的是 ppc32 )。

file -L /some_path/lib/libkyotocabinet.so看看它说了什么。您必须为与 gcc 相同的架构重建它默认生成。

更新:fileELF 64-bit MSB shared object, 64-bit PowerPC .但这是否与您的 g++ 相符?默认输出?输出是什么:

echo "int foo() { return 0; }" | g++ -xc++ - -c -o foo.o &&
file foo.o

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

更新 2:

Any idea for this problem??



你不应该这么无助。你知道问题是不匹配的库,所以去修复它。
  • 决定最终的二进制文件是在 32 位还是 64 位模式下运行
  • 以您想要的位数获取或重建您需要的所有库
  • 构建最终的二进制文件
  • 利润!
  • 关于architecture - "Skipping incompatible"在 Blue Gene 机器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7898056/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com