Linux-如何把LINUX下写的C++程序编译成裸机代码。
请教一个问题,如何把LINUX下写的C++程序编译成裸机代码。也就是一次编译完成之后,所有的LINUX上都能跑?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
请教一个问题,如何把LINUX下写的C++程序编译成裸机代码。也就是一次编译完成之后,所有的LINUX上都能跑?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
需要将C++程序编译成可移植性强的可执行程序。
1.学究一点来概括就是要遵循“POSIX”标准里面的接口。(POSIX是IEEE为要在各种UNIX操作系统上运行的软件,而定义API的一系列互相关联的标准的总称) 。
2.通俗一点, 从实践角度来看就是:
a. 尽量少用动态链接库,减少外部依赖。
b. 跟操作系统相关的接口调用,看下是否遵循posix标准。(比如线程的调用,有posix实现,也有非posix实现,尽量用posix实现 )
c. 如果程序中有硬件架构相关的比如64位,32位;CPU的类型。这些功能肯定没有办法做到很好的移植性。
编译成静态的,gcc 参数加上-static 参数,可能有些动态库需要提供.a文件
这是不可能的,Linux 兼容的架构太多了,其机器码也各有不同
编译成 i386 兼容的程序不能在 ARM 上跑,反之亦同