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

相关推荐
G_H_S_3_1 天前
【网络运维】Docker 存储:镜像层与数据卷的管理应用
linux·运维·网络·docker
Suckerbin1 天前
C语言简介
c语言
junlaii1 天前
Windows 安装 claude code 教程
windows·ai
还鮟1 天前
靶机远程控制实验命令与入门实践(Linux)
linux·网络·安全
手揽回忆怎么睡1 天前
Alibaba Linux 8安装jdk25
linux·运维·服务器
爱潜水的小L1 天前
自学嵌入式day39,抓包
linux
非凡ghost1 天前
CoolUtils PDF Combine(PDF合并工具)
windows·学习·pdf·软件需求
lifewange1 天前
测试场景 Linux 命令速查表
linux·运维·服务器
Vect__1 天前
进程控制详解
linux·驱动开发
就叫飞六吧1 天前
JSONPath“隔空取物”思想,直击JSON深处的目标字段
服务器·windows·json