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

相关推荐
C++ 老炮儿的技术栈2 分钟前
#include <filename.h> 和 #include “filename.h” 有什么区别?
linux·c语言·开发语言·c++·windows·visual studio
a***59263 分钟前
Linux命令创意大赛:高效组合大比拼
linux·运维·服务器
晚风吹人醒.6 分钟前
YUM仓库部署+PXE远程部署+ks无人值守,安装配置全流程讲解与展示
linux·运维·yum·dhcp·无人值守·tftp·ks
额呃呃14 分钟前
SIGALRM信号处理机制详解
网络·windows
余衫马15 分钟前
为什么在 Windows 上用 Clang/LLVM?
c++·windows·c
国产化创客17 分钟前
轻量化年龄识别模型SSR-Net在树莓派部署测试
linux·物联网·边缘计算·智能硬件
八宝粥大朋友17 分钟前
rabbitMQ-C 构建android 动态库
android·c语言·rabbitmq
黄美美分享19 分钟前
【音频编辑工具】跨平台轻量音频编辑器!音频剪辑工具!新手也能玩转专业处理
windows·安全·音视频
2023自学中20 分钟前
Ubuntu 安装 VS Code
linux·ubuntu
yuanmenghao27 分钟前
车载Linux 系统问题定位方法论与实战系列 - OOM 与资源耗尽:系统是如何被“慢慢拖死”的
linux·运维·服务器·网络·驱动开发·自动驾驶