hello.c

linux下面写了一个hello.c程序,gcc hello.c -o hello,把hello可执行程序放在Windows下面能运行起来吗?

不能,已经编译好了呀……不同平台的编译方式是不一样的,生成的可执行文件是不一样的格式。

把源代码(hello.c)拿过来,重新编译当然可以运行在Windows下面了。(针对hello.c这个情况,并不是c/c++写的所有程序都能跨平台)。

这里就要了解一下POSIX标准接口……

例如:

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>

int main() {
    char* s = "hello";
    write(1, s, 5);
    return 0;
}

https://bbs.csdn.net/topics/370195007

上面这段代码用了一个系统调用write,但是这段代码在windows和linux下各自编译都可以运行起来……write在windows和linux下面都是一个相同名字,相同参数的系统调用,但是内在实现的机制是不一样的,但是它们的接口是一致的!!!POSIX!!!

图片说明

图片说明

C/C++写的代码能不能跨平台编译要看具体的代码逻辑,但是已经编译好了当然是不能跨平台运行的……这个就是交叉编译,go语言我也用过交叉编译,windows下面写好的服务程序,交叉编译为linux平台的,然后丢到服务器上面去……go语言天生支持跨平台

全部评论

相关推荐

我要娶个什么名:学长你电脑闹鬼了
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务