生成库文件的目的
在BES软件开发过程中, 如果我们需要保护某些关键代码不被其他开发者访问或修改, 可以将这些代码打包成库文件, 打包成库文件可以防止恶意攻击者通过反编译等手段获取我们的源代码. 可以保护代码中的某些敏感信息, 将这些信息隐藏在库文件中, 而不是直接写在源代码中, 从而提高了项目的安全性
生成库文件的例子
-
比如目录结构为这样, src目录中放源码.c文件, inc目录中存放开放给用户的.h头文件, 这里例子src目录中有一个文件源码文件code_file.c文件, 需要打包成打包成库文件.a文件, 发放代码的时候只提供.a库文件和.h头文件.
目录结构
-
这里演示的src目录中的code_file.c文件中有两个接口提供给库外面调用
-
修改makefile
这里lib文件是需要使用makefile文件来生成, 在文件夹中的makefile中加入以下字符
LIB_NAME := lib_test
$(LIB_NAME)-y := $(obj_c:.c=.o) $(obj_s:.S=.o) $(obj_cpp:.cpp=.o)
obj-y += $(LIB_NAME).a
LIB_NAME代表意思是将要生成的lib的名字, 这里LIB_NAME相当于一个变量, 名字可以任意自定义
-
编译工程
编译工程, 编译命令时候将GEN_LIB宏打开, 或者makefile下直接打开GEN_LIB, 以下是makefile下直接修改打开
-
生成lib
工程编译完成之后, 源码路径下会多出一个lib文件夹, 里面会有一个刚刚生成的.a文件
-
删除源码文件夹src文件夹, 只保留头文件和库文件, 并将上面步骤生成LIB的宏开关 GEN_LIB 关掉
-
库文件中接口调用, 需要在使用库接口的位置将头文件包含进来, 这里比如
#include “code_file.h”
然后在需要使用的地方调用函数即可
需要注意的是使用的地方的makefile需要新增头文件的包含, 不然编译会提示找不到文件的错误