#Linux学习(三)#Linux编程基础(下)

Make和Makefile

显示规则
  • 格式
    目标文件:依赖文件列表
    <tab>命令

<tab>开始的行,make程序会将其交给系统的Shell程序去执行

hello:hello.c
     gcc -o hello hello.c
隐含规则
  • make根据一类目标文件(典型的是根据文件名的后缀)而自动推导出来的规则
变量
  • 类似C语言的宏,大小写敏感
  • $<,$@,$^都是自动化变量
    • $@:目标文件
    • $^ :所有依赖文件
  • 举例
    在这里插入图片描述
指示符
  • 指明make程序读取Makefile文件过程中所要执行的一个动作
  1. include指令
  2. 根据一个变量的值决定处理或者忽略Makefile中的某一特定部分
  3. 定义一个多行变量
注释
  • #后内容作为注释
  • 需要字符#时,\#来实现

  • 由系统提供的,供程序员开发时使用,完成特定功能
  • 存放在/ust/lib/lib/目录中
  • 库文件名
    • 前缀lib和库名以及后缀组成
    • 静态库后缀名为.a
    • 共享库后缀名由.so和版本号组成
  • 两种形式
    • 静态库:代码在编译时就已经连接到开发人员开发的应用程序中
    • 共享库 :在程序开始运行时才载入,在编译时,只是简单地指定需要使用的库函数
静态库
  • 创建

    • gcc -c libhello.c生成目标文件libhello.o
    • ar -rcs libhello.a libhello.o 生成静态库libhello.a

    -r:在库中插入模块(替换)
    -c:不论库是否存在都将创建,不给出警告
    -s:强制更新库的符号表,即是库的内容没有发生变化,显示执行操作选项的附加信息

  • 使用gcc -o hello hello.c libhello.a

共享库(动态库)
  • 创建
    • gcc -fPIC -c libhello.c生成目标文件libhello.o
    • gcc -shared -o libhello.so libhello.o生成共享库libhello.so
  • 使用
    • 默认搜索路径是/usr/lib/lib,拷贝过去cp libhello.so /usr/lib
    • 使用动态链接库gcc -o usehello_dynamic usehello.c -lhello
    • 或者不拷贝直接使用 gcc -o usehello_dynamic usehello.c -L ./ -lhello
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值