GCC常用参数及制作使用库

本文详细介绍了GCC编译器的常用参数,包括指定输出文件、头文件目录和调试信息的添加。同时,讲解了如何制作和使用静态库与动态库,重点阐述了静态库与动态库的生成步骤及命名规则。在动态库使用中,提到了动态链接器的工作原理,并给出了动态库加载出错时的两种解决方法。

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

GCC常用参数及制作使用库

常用参数

  1. -o

    指定输出文件名

    gcc hello.c -o hello

  2. -I

    指定头文件所在目录

    gcc hello.c -o hello -I ./includes

  3. -g

    添加调试信息,配合gdb使用

    gcc main.c -o debug_main -g -I ./includes/

  4. -Wall

    显示所有调试信息

    gcc main.c -o main -I ./includes/ -g -Wall

  5. -D

    向程序中动态注册宏定义

    gcc main.c -o main -I ./includes/ -g -Wall -D HELLO

制作与使用静态库、动态库

  • 制作静态库

    1. 生成.o文件(c编译第三阶段-汇编)

      gcc -c xmath.c -o xmath.o

    2. 利用生成的.o文件制作静态库,库名的命名规则:lib库名.a

      ar rcs libxmath.a xmath.o

  • 使用静态库

    1. 引入静态库及静态库对应的头文件到项目中

    2. 编译时将静态库与项目源文件一起编译,注意静态库一定要放在源文件参数后

      gcc test.c ./lib/libxmath.a -o test -I ./include/ -g -Wall

  • 制作动态库

    1. 生成.o文件,与静态库不同的是必须加上 -fPIC参数

      gcc -c xmath.c -o xmath.o -I ./includes/ -Wall -g -fPIC

      PIC:position independent code 与位置无关的代码

    2. 利用生成的.o文件制作动态库,库名的命名规则:lib库名.so

    gcc xmath.o -o libxmath.so -shared

  • 使用动态库

    1. 引入头文件及动态库

    2. 编译

      -l指定库名,-L指定动态库所在目录。这个参数必须放在项目源文件参数后面,否则报错

      gcc main.c -o main -l xmath -L ./lib/ -I ./includes/ -g -Wall

动态库加载出错

  • 链接器

    工作于链接阶段,需要-l-L参数支持

  • 动态链接器

    工作于程序运行阶段,工作时需要提供动态库所在目录位置,不提供则执行会报错

    1. 方法一:export LD_LIBRARY_PATH=./lib

      此方法是临时的,当关闭终端后在打开终端,加载动态库的环境变量会初始化,动态库加载仍然会报错。

    2. 方法二:修改用户家目录下的.bashrc文件

      在最后一行添加export LD_LIBRARY_PATH=./lib保存退出,然后执行source .bashrc命令是配置文件生效

  • 查看程序依赖的动态库加载路径

    ldd 可执行程序名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值