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 、在终端中打开也是不能运行的

相关推荐
Aaswk14 小时前
蓝桥杯2025年第十六届省赛真题(更新中)
c语言·数据结构·c++·算法·职场和发展·蓝桥杯
cga194714 小时前
【RabbitMQ】超详细Windows系统下RabbitMQ的安装配置
windows·分布式·rabbitmq
香水5只用六神15 小时前
【DMA】存储器到外设模式实验2
c语言·git·stm32·单片机·嵌入式硬件·github·visual studio
Yupureki15 小时前
《C++实战项目-高并发内存池》4.CentralCache构造
c语言·开发语言·c++·单例模式·github
papaofdoudou15 小时前
QEMU和KVMTOOL在GPA(IOVA)和HVA映射方面的异同
linux·运维·服务器
xh didida16 小时前
数据结构--实现链式结构二叉树
c语言·数据结构·算法
jason_renyu16 小时前
Windows下MySQL多实例配置:添加多端口服务(独立配置文件法)
windows·mysql·mysql配置多端口服务
艾莉丝努力练剑16 小时前
文件描述符fd:跨进程共享机制
java·linux·运维·服务器·开发语言·c++
原来是猿16 小时前
Linux-【文件系统下】
linux·运维·数据库
勇闯逆流河16 小时前
【Linux】linux进程概念(冯洛伊曼体系、操作系统、进程详解)
linux·运维·服务器