C 语言多文件编译

使用函数封装、库文件的制作与使用、多文件编译 C语言程序。

  • 文件结构:



    include:存放头文件
    lib:存放库文件
    src:存放源文件
     
  • 制作动态库

    新建test目录,创建 max.c、max.h 文件,可以创建测试文件 main.c 验证程序的正确性:
     
    //max.h
    
    #ifndef _MAX_H_
    #define	_MAX_H_
    
    int max(int a,int b);//比较
    
    #endif
    //max.c
    
    #include "max.h"
    
    int max(int a,int b){
    
    	return a>b?a:b ;
    }

    制作动态库:

    //制作过程文件
    gcc -c -fPIC max.c -o max.o
    //制作动态库文件
    gcc -fPIC -shared max.o -o libmax.so
    

     

  • 编写编译规则Makefile

    #定义变量保存gcc,arm-linux-gcc
    #CROSS_COMPILE=arm-none-linux-gnueabi-
    CC=$(CROSS_COMPILE)gcc
    SRCS=$(wildcard *.c)
    SRCS+=$(wildcard src/*.c)
    OBJS=$(patsubst %.c, %.o, $(SRCS))
    T=main
    CONFIG=-I./include
    CONFIG+=-L./lib
    #CONFIG+=-ljpeg -lpthread -lapi_v4l2_arm1
    CONFIG+=-lmax 
    $(T):$(OBJS)
    	$(CC) -o $@ $^  $(CONFIG)
    %.o:%.c
    	$(CC) -c $< -o $@ $(CONFIG)
    clean:
    	rm *.o src/*.o $(TARGET)
    
  • 运行结果:


     
  • 缺少库文件:

    ./main: error while loading shared libraries: libmax.so: cannot open shared object file: No such file or directory
  • 解决办法:

    1、把库文件放在系统目录下:cp libmax.so /lib

    2、配置环境变量将库文件存放路径设置一下

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值