量化交易之linux篇 - makefile - 制作数学库(动态库&静态库)

这篇文章描述了一个C语言项目的Makefile配置,用于编译类型为release的项目。它定义了编译器变量,如CC和AR,以及编译标志,包括-Wall等。项目包含一个名为libmath的动态库和一个名为mathTest的测试程序。Makefile包含了创建动态库libmath.so、清理目标文件以及构建和链接mathTest程序的规则。
摘要由CSDN通过智能技术生成

compile_type = release

CC = gcc
AR = ar
RANLIB = ranlib 

CCFLAGS = -Wall -Wextra -Wshadow -Wconversion -std=c99 -pedantic -O2 -g
ifeq ($(compile_type), release)
CCFLAGS =
endif


SRCS=$(wildcard src/*.c)
SRCS+=$(wildcard *.c)
OBJS=$(SRCS:%.c=%.o)
INCLUDES=$(wildcard include/*.h)
LIBS=$(wildcard lib/*.a)
DLLS=$(wildcard bin/*.so)

$(OBJS): $(INCLUDES)

libmath.so: $(OBJS)
    $(CC) -shared -fPIC $(CCFLAGS) $(SRCS) -o $@
    make clean

mathTest.o: $(INCLUDES)

mathTest: mathTest.o $(DLLS)
    $(CC) $(CCFLAGS) -o $@ $^
    make clean


# libmath.a: $(OBJS)
#     $(AR) rcu $@ $^
#     $(RANLIB) $@
#     make clean

# mathTest.o: $(INCLUDES)

# mathTest: mathTest.o $(LIBS)
#     $(CC) $(CCFLAGS) -o $@ $^
#     make clean


clean:
    rm -rf $(OBJS)

reinstall:
    @echo "Please comming soon.";
// math.h

#if !defined(__MATH__)
#define __MATH__


int sum(int value1, int value2);
int sub(int value1, int value2);
int mul(int value1, int value2);
int div(int value1, int value2);


#endif // __MATH__
// math.c

int sum(int value1, int value2) {
    return value1 + value2;
}
int sub(int value1, int value2) {
    return value1 - value2;
}
int mul(int value1, int value2) {
    return value1 * value2;
}
int div(int value1, int value2) {
    return value1 / value2;
}
#include <stdio.h>
#include "include/math.h"

int main(int argc, char *argv[]) {

    int a = 20;
    int b = 10;

    printf("sum: %d\n", sum(a, b));
    printf("sub: %d\n", sub(a, b));
    printf("mul: %d\n", mul(a, b));
    printf("div: %d\n", div(a, b));

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值