一、概要
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