我试图只编译看起来相似的东西(都是64位的Ubuntu ),但二进制文件不能在Ubuntu的Amazon实例上运行(它也是64位的,但除此之外不知道更多)。
我看到一个线程建议旋转额外的EC2实例只是为了在那里编译,但这不是一个解决方案,因为我不能将源代码转移到外部,只有编译后的二进制文件和动态库。
我在考虑在我的电脑上创建一个虚拟环境来生成一个EC2的克隆,然后在那里编译,但是可行吗?
内核信息:
uname -a
4.4.0-93-generic #116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
ip-xxx-xxx-xxx-xxx 4.4.0-1035-aws #44-Ubuntu SMP Tue Sep 12 17:27:47 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
它似乎使用了亚马逊定制的内核?
文件信息:
file ./testBinary
./testBinary: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), too many program (2304)
file -Pelf_phnum=3000 ./testBinary
./testBinary: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), corrupted program header size, corrupted section header size
发布于 2017-09-26 08:26:29
你不能真的“克隆”你从某个AMI创建的EC2实例。所以,既然你不知道为什么你的库不能工作,我建议你运行Amazon Linux而不是Ubuntu。
您可以在机器上的Docker容器中运行Amazon Linux,并在那里构建您的库(https://hub.docker.com/_/amazonlinux/)。这样,该库在Amazon Linux的任何EC2中都应该可以顺利运行。
如果你想坚持使用Ubuntu,至少你应该匹配Ubuntu的版本(不仅仅是架构),可能还有内核版本。
https://stackoverflow.com/questions/46421120
复制相似问题