我正在尝试在 Blue Gene 超级计算机上构建 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
了他们,谷歌协议缓冲区有这样的东西
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 吗?或者我可以像上面提到的那样添加一些行来告诉 Kyotocabinet 在哪里可以找到正确的库?或者你能推荐一些快速键值存储吗?