» C语言快速入门 » 2. 高级篇 » 2.4 构建二进制文件

构建二进制文件

输入和输出

在 C 中,通过 stdio.h(标准输入输出库)头文件与用户控制台进行交互,该头文件包含用于输入和输出的函数。

#include <stdio.h>

int main() {
    char name[50];
    int age;

    printf("Enter your name: ");
    // 使用 scanf 从用户控制台读取字符串(name)
    scanf("%s", name);

    // 提示用户输入年龄
    printf("Enter your age: ");
    // 使用 scanf 从用户控制台读取整数(age)
    scanf("%d", &age);

    printf("Hello, %s! You are %d years old.\n", name, age);
    return 0;
}

程序参数

在 C 中,可以使用主函数中的 argcargv 参数获取命令行参数。 argc 是命令行参数的数量,argv 是包含参数的字符串数组。

#include <stdio.h>

int main(int argc, char *argv[]) {
    // 检查是否至少有两个参数
    // 程序名是第一个参数)
    if (argc >= 2) {
        // 打印程序名
        printf("Program name: %s\n", argv[0]);

        // 遍历参数
        printf("Arguments:\n");
        for (int i = 1; i < argc; i++) {
            printf("Argument %d: %s\n", i, argv[i]);
        }
    } else {
        printf("Usage: %s <arg1> <arg2> ...\n", argv[0]);
    }
    return 0;
}

编译

广义上的编译是将人类可读的 C 源代码转换为机器可执行代码的过程。 它包括4个步骤:预处理编译汇编链接

预处理

预处理器扫描源代码并处理以 # 开头的指令,例如 #include#define。 它做的事情有包含头文件展开宏执行条件编译等。

编译

预处理后的代码被输入到编译器中,编译器将其转换为汇编代码或中间表示结果。 编译器检查代码的语法和语义,并生成包含机器代码的目标文件。

汇编

汇编器将汇编代码转换为计算机处理器能够理解的机器代码或二进制代码。 这一步生成具有 “.o” 扩展名的目标文件。

# 将 main.c 编译为对象
gcc -c -std=c11 src/main.c -o main.o
# 将 calculator.c 编译为对象
gcc -c calculator.c -o target/calc.o

GCC

GCC(GNU Compiler Collection,GNU编译器集合)。了解有关GCC的更多信息:https://gcc.gnu.org/

链接

链接器获取在编译过程中生成的目标文件,并将它们与所需的库结合起来,以创建最终的可执行文件。 链接阶段负责解析函数和变量的引用,分配内存地址,并生成可执行文件。

# 链接对象并创建可执行文件
gcc main.o target/calc.o -o bin/myprog

持续前进。持续学习。