前言

从本文开始,从一个简单的加密项目来完整实现完整的Makefile,静态库和动态库教程。本文环境为Debian 11 && gcc (Debian 10.2.1-6) 10.2.1 20210110

目录结构

simple_encrypt # 项目根目录
|
|----- include # 头文件目录
|        |
|        |----- checksum.h
|        |----- encrypt.h
|
|----- src # 源码目录
|       |
|       |----- checksum.c
|       |----- encrypt.c
|       |----- test_code.c
|
|----- Makefile

源码

checksum.h

int checksum(char *message);

checksum.c

#include "checksum.h"

int checksum(char *message)
{
    int c = 0;
    while (*message)
    {
        c += c ^ (int)(*message);
        message++;
    }
    return c;
}

encrypt.h

void encrypt(char *message);

encrypt.c

#include "encrypt.h"

void encrypt(char *message)
{
    while (*message)
    {
        *message = *message ^ 31;
        message++;
    }
}

test_code.c

#include <stdio.h>
#include "encrypt.h"
#include "checksum.h"

int main(void)
{
    char s[] = "Speak friend and enter";
    encrypt(s);
    printf("Encrypted to '%s'\n",s);
    printf("Checksum is %i\n",checksum(s));
    encrypt(s);
    printf("decrypted back to '%s'\n",s);
    printf("Checksum is %i\n",checksum(s));
    return 0;
}

共享头文件

在多个C项目中共享头文件的方法有很多:

把头文件保存在标准目录中

只要把头文件复制到/usr/local/include/这样的标准目录中,就可以在源代码中用尖括号包含它们

#include <encrypt.h>
include语句中使用完整路径名

encrypt.c中可以这样写:

#include "../include/encrypt.h"
告诉编译器去哪里找头文件

使用gcc-I选项:

gcc -I../include/ checksum.c encrypt.c test_code.c -o test_code

参考资料:《嗨翻C语言》

标签: none

评论已关闭