我写了一个C程序,并使用someProgram.c保存并编译到我的64位机器上。生成了“someProgram.out”文件。我将someProgram.out发送给朋友,但没有在他的机器上执行。它报告“无法执行二进制文件”错误,当他试图在他的虚拟机中安装的Ubuntu 14.04上运行它。 如何编写代码,以便它可以在不同体系结构的计算机上运行,也可以在虚拟机上运行,而无需在所有计算机上编译,即仅在我的计算机上编译后才能运行?如何在不编译它的情况下在不同的体系结构上编译相同的C代码?
0
A
回答
2
“无法执行二进制文件”可能由许多不同的事情引起。如果体系结构真的不同,那么除了重新编译它(除了运行原始的操作系统和处理器体系结构的模拟器,但这是)或者将代码重写为某种编译中间形式(例如,可以编译为Java字节码的Java本身可通过具有执行代码的“Java虚拟机”进行移植。另一方面,如果问题在于二进制文件缺少一些依赖项 - 一些共享库位于您的机器上,但不在您的朋友的机器上,那么解决方案是安装相应的库(右侧版)。或者使用静态库重新编译,以便它不依赖于共享库。
编译C +或C++代码的目的是生成一个可在特定OS /处理器架构上直接执行的二进制文件。 C和C++语言只能作为源代码而不是二进制可执行文件移植到其他操作系统/处理器软件包中。
0
想象一下,你正在做一个100块拼图游戏,你失去了一块。所以你从一个不同的难题中偷了一块,所以你会有100件。
问题是,新作品不是为你的拼图而制作的。它不适合。如果你已经从与你的完全相同的难题中获得了你的第100张作品,它会奏效。 (“它在我的机器上运行”)
编译器为您的目标操作系统生成代码。如果你是64位,那么你的编译器可能会默认创建一个64位的拼图。如果你的朋友正在运行32位,那么你的64位拼图片将不适合他的拼图。
告诉您的编译器为目标生成正确的代码。
这个计算器的问题可能会帮助你走上正确的道路。如果没有,如果写得好改变代码,,您可以更改编译器标志可以产生两个不同的目标图像(拼图)
How do I create a single makefile for both 32- and 64-bit?
你的编译器可能会尖叫各类取决于你如何写警告你程序不依赖于OS中的位数。
如果你正在做跨平台,那么你将需要了解其他标志。这是你学习的地方。
相关问题
- 1. 在不同编译器上产生不同输出的代码
- 2. QString在相同的编译(但不同的系统)上返回不同的sting
- 3. Scala代码在不使用scalac编译的情况下运行?
- 4. 如何在不添加不可达代码的情况下编译异步lambda?
- 5. C++:相同的代码和编译器,但每次构建后输出不同
- 6. 在Windows上编译C++/LapackE代码很好,但是相同的代码在Linux上编译失败
- 7. 编译器如何交叉编译到不同的操作系统和体系结构?
- 8. 编译器可以在没有扩展的情况下编译代码吗?
- 9. C++与gcc和visual studio不同的编译错误,'在这种情况下'
- 10. 如何在不编译代码的情况下修改全局资源DLL?
- 11. 如何在不安装IDE的情况下编译并运行此Delphi代码?
- 12. 在没有Visual Studio的情况下编译Microsoft的LoginAdmin.dll代码
- 13. 编译不同的语言在Eclipse上
- 14. 如何在不编译宏的情况下启动excel?
- 15. 如何在不崩溃编译器的情况下实现MutableCollectionType?
- 16. 如何在不重新编译FLA的情况下更新SWF
- 17. 如何在不调试的情况下编译PHP扩展?
- 18. 在不编辑的情况下添加编译器选项Makefile
- 19. 如何在没有主函数的情况下编译C源代码?
- 20. 相同的代码,在不同的C编译器中使用printf()和write()不同的打印顺序
- 21. ffmpeg:相同的编译在不同的机器上表现不同
- 22. 如何使用Scons在Glob的不同环境下编译相同的对象?
- 23. 如何在不编译的情况下运行一组相关的groovy脚本?
- 24. 任意体系结构的可编译目标编译器
- 25. 不能编译C++的 “HelloWorld” 用gcc编译器在Windows上的代码块
- 26. 结构不编译?
- 27. 编译器在Integer上的行为不同。为什么下面的代码在一种情况下会给编译器带来错误?
- 28. C代码 - Pthread不编译
- 29. 不能编译代码[C++]
- 30. C++代码不能编译
如果您使用交叉编译器,您可以编译您的程序用于不同的目标,但仍需要为每个目标编译它。 – melak47
您必须为体系结构或C解释器使用仿真器,该解释器也涵盖使用的库函数。 – Olaf
编译32位并安装i386软件包。 http://askubuntu.com/questions/454253/how-to-run-32-bit-app-in-ubuntu-64-bit –