GCC背后的故事&C程序常量变量的地址分配

本文详细指导如何在Ubuntu系统中使用gcc生成静态库libexample.a和动态库libexample.so,以及如何在C程序中链接和使用它们。还介绍了C程序中的不同变量类型和STM32的存储器地址映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)阅读、理解和学习材料“用gcc生成静态库和动态库.pdf”和“静态库.a与.so库文件的生成与使用.pdf”,请在Linux系统(Ubuntu)下如实仿做一遍。

对于学习可执行程序的编译和组装过程,可以按照以下步骤在Linux系统(Ubuntu)下进行实践:

  1. 下载并阅读材料 “用gcc生成静态库和动态库.pdf” 和 “静态库.a与.so库文件的生成与使用.pdf”,确保你对静态库和动态库的生成和使用有基本的了解。

  2. 在Ubuntu系统中打开终端,确保你已经安装了gcc编译器和相应的开发库。你可以通过运行以下命令来安装gcc:

    sudo apt update
    sudo apt install build-essential

    3.创建一个简单的C程序,用于生成静态库和动态库。你可以使用任何文本编辑器创建一个名为"example.c"的文件,并将以下代码复制到文件中:

  3. #include <stdio.h>
    
    void hello() {
        printf("Hello, World!\n");
    }

    4.编译并生成静态库。在终端中运行以下命令:

    gcc -c example.c  // 编译为目标文件example.o
    ar rcs libexample.a example.o  // 将目标文件打包为静态库libexample.a

    5.编译并生成动态库。在终端中运行以下命令:

    gcc -shared -o libexample.so example.o  // 将目标文件编译为动态库libexample.so

    这将生成名为"libexample.so"的动态库文件。

       6.创建一个新的C程序,用于使用生成的静态库和动态库。你可以使用任何文本编辑器创建一         个名为"main.c"的文件,并将以下代码复制到文件中:

extern void hello();  //声明外部函数

int main() {
    hello();  //调用外部函数
    return 0;
}

编译并生成可执行程序。在终端中运行以下命令:

  • 使用静态库:

    gcc -o main main.c -L. -lexample  //将main.c与静态库libexample.a链接生成可执行程序main

    使用动态库:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值