同一段C++在Linux和windows下编译后的可执行文件有什么不同?


同一段C++在Linux和windows下编译后的可执行文件有什么不同?


比如一段非常简单的显示hello  world的代码,在linux下编译成可执行文件后和在windows下编译成可执行文件,两个文件有什么不同?


在linux下的可执行文件拷贝到windows下后还能正常运行吗?
------解决方案--------------------------------------------------------
绝大多数情况下是不能运行的.跨平台 跨系统 这类就是干这个的.基本上大部分东西都是和操作系统有密切关联的.
------解决方案--------------------------------------------------------
这要分两种情况,
1.你没有调用Linux特殊的函数库,而使用的是C/C++的标准库
这样在同样平台下能完成的工作是相同的,但是因为Linux下gcc或g++编译出的可执行文件文件头是ELF
windows下可执行文件头是PE,所以只要把Linux下编译出的可执行文件头去掉,然后加上一个PE文件头就可以在windows下跑了。
2.你调用了Linux特殊的函数(动态)库,比如包含了unistd.h等Linux系统特有的API函数库(或windows下的windows.h等等)
这样你就没法直接移植了,因为程序执行会去调用动态库的函数,Platform变了找不到就要报错。除非你能把Linux下的特有库移植到windows上去,但是这工作量。。。。
如果楼主想要了解更详细的,建议你去看看关于Linux内核的书就了解了。
------解决方案--------------------------------------------------------
Linux是ELF格式,Windows是PE格式,两个是不同的。直接拷贝是不行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值