Linux上的可执行文件在Windows上是不能运行的

一、概要

1、可执行文件的格式

Linux上的可执行文件是elf格式的

Windows上的可执行文件是exe格式的

Linux上的可执行文件在Windows上是不能运行的

2、程序的普通构建与静态构建

普通构建:

一个.c文件,用gcc命令编译成可执行文件(程序),该程序运行时是需要动态链接c运行时库以及其他库的,如果电脑上没有安装这些库,则该程序是不能正常运行的

静态构建:

将.c文件和需要的库一起编译构建成一个可执行文件(程序),该程序包含了所有运行需要的内容,可以直接迁移

相同的.c文件,静态构建的程序比普通构建的程序大很多

二、自己写的代码

复制代码
#include<stdio.h>
int fun(int, int);
int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    printf("%d\n", fun(n, m));
    return 0;
}
int fun(int n, int m) {
    if (n == 0 || m == 0) {
        return 1;
    }
    return fun(n - 1, m) + fun(n, m - 1);
}

三、在Linux上运行

1、编译

普通构建

gcc hh.c -o RegularBuild

静态构建

gcc -static hh.c -o StaticBuild

注意普通构建的程序和静态构建的程序的大小上的差别

2、运行

四、在Winows上是不能运行的

将本篇三中构建的RegularBuild和StaticBuild拷贝到Windows中

1、桌面双击不能运行

选择记事本打开,可以看到文件开头的ELF

2 、在终端中打开也是不能运行的

相关推荐
leaves falling2 分钟前
c语言自定义类型深度解析:联合(Union)与枚举(Enum)
c语言·开发语言·算法
物理与数学3 分钟前
Linux内核 mm_struct
linux·linux内核
玖釉-12 分钟前
[Vulkan 学习之路] 07 - 交换链 (Swap Chain):图像的物流中心
c++·windows·图形渲染
leiming614 分钟前
手写Linux C UDP通信
linux·c语言·udp
明天就是Friday16 分钟前
(五)Linux 调度器 - CFS调度器
linux·linux内核·linux 调度器
深兰科技16 分钟前
俄罗斯T1集团代表团到访深兰科技,就具身智能与复杂场景工程化应用达成多项合作共识
windows·ci/cd·github·visual studio·具身智能·深兰科技·俄罗斯t1集团
lbb 小魔仙29 分钟前
【Harmonyos】开源鸿蒙跨平台训练营DAY1:Windows上搭建Flutte跨平台开发环境
windows·flutter·harmonyos·鸿蒙·开源鸿蒙·鸿蒙开平台应用
水饺编程34 分钟前
第4章,[标签 Win32] :绘制信息结构
c语言·c++·windows·visual studio
阿拉伯柠檬35 分钟前
网络层与网络层协议IP(一)
linux·网络·网络协议·tcp/ip·面试
lcreek37 分钟前
Linux 信号机制详解:从硬件异常到安全编程实践
linux·系统编程