fengm 发表于 2023-12-13 22:45

Keil下多文件打包生成LIB库

在项目上有时需要提供程序给客户自己修改一些参数调节效果,但自己又不想提供源码公开时,这时就可以使用keil自带的打包Lib文件功能,操作如下:
1、先打开一个工程项目,如果DRIVER文件下的lcd.c、key.c、24c02.c和IIC.c这四个文件的源码不想给别人看到的话,就将这些文件进行打包成Lib库,如下图1:https://pic2.zhimg.com/80/v2-0bd43e83e7bec2fde8e27cc3cd912215_720w.webp
图1
2、将除了这四个文件外的其它文件都移除掉,这里可以先备份一份原工程项目,稍后可以将转化后的Lib库直接使用,而不用再将移除掉的文件重新添加,如下图2:https://pic1.zhimg.com/80/v2-e5c110c9fb6f9103871a1234c8134938_720w.webp
图2
3、点击上方工具栏的“Options for Target...”选项,如下图3的红框:https://pic1.zhimg.com/80/v2-d3dd102f43f4b3ed7404fbc6ffb98974_720w.webp
图3
4、点击“Output”选项,先点击红框1的“Select Folder for Objects”设置打包的Lib库文件保存位置,途径自己设置就行了,然后勾选红框2的“Create Library”(Create Library后面就是保存的位置),点击OK设置完毕,如下图4:https://pic1.zhimg.com/80/v2-5004aca3db8519dd96485ca60ff918bc_720w.webp
图4
5、进行编译,编译完之后会在刚刚的保存路径生成一个.lib文件,复制该文件,如下图5:https://pic2.zhimg.com/80/v2-0faf794289b309bb2d9bef105145a845_720w.webp
图5
6、在第2步备份的原工程项目可以新建个文件夹存放该复制的.lib文件,然后将刚刚封装成Lib的四个.c文件lcd.c、key.c、24c02.c和IIC.c从文件夹里面删掉,只保留这四个文件的.h文件,因为这里需要从这些.h文件去链接对应的.c文件的函数,所以打包成库的话只能看到.h文件里面的接口函数而看不到源码,红框里就是删减后的DRIVER文件和新增的Lib库文件,如下图6:https://pic2.zhimg.com/80/v2-ba857df7c0adeeee86cb03b2df2d4351_720w.webp
图6
7、到这里已经将所有步骤都完成了,接着进行编译,编译通过,如下图7:https://pic1.zhimg.com/80/v2-1f7248f2a6946a80e8818ac718eea400_720w.webp
图7
注意:这里打包成库的文件不能用函数通过右键“Go To Definition of xxxxx”去跳转到源码上了,只能看到对应.h文件里面的函数名。这里也可以将一些官方库进行打包封装,因为编译时许多有用到的官方库都会进行编译,这样编译起来会浪费很长时间,所以这里也可以将这些文件进行打包,这样编译工程就不会将这些文件再次编译,这样就可以节省很多时间。

yorkbarney 发表于 2024-2-2 21:52

通常是不希望他人看到的源代码文件

saservice 发表于 2024-2-4 22:56

在Keil中使用“Library Manager”工具生成LIB库。以下是生成LIB库的具体步骤:
打开“Library Manager”工具,选择“Library”选项卡。
点击“Add”按钮,选择需要打包成LIB库的目标文件(.obj文件)。
点击“Add”按钮,选择LIB库的输出路径和文件名。
点击“Create”按钮,生成LIB库。

caigang13 发表于 2024-2-5 08:23

学习了,还能这样操作。

zwsam 发表于 2024-2-5 10:41

olivem55arlowe 发表于 2024-2-5 11:24

在配置好项目后,你可以构建项目。Keil将会编译所有的源文件,并生成一个LIB文件。LIB文件通常位于你指定的输出目录中,或者在项目的“Objects”文件夹中。

vivilyly 发表于 2024-2-5 12:03

打开一个已存在的工程项目,或者创建一个新的工程项目。
在项目窗口中,选中要打包的文件,通常是.c文件和对应的.h文件。
进入项目的属性设置。在Keil中,可以通过右键点击项目名称,选择“Options for Target”来进行设置。
在属性页中,找到“Output”选项卡。
在“Output”选项卡中,勾选“Create Library”选项。这样,在编译时,Keil会将选中的文件打包成一个LIB库。
点击“OK”保存设置,然后开始编译项目。编译完成后,在项目目录下会生成对应的LIB库文件。
在其他项目中使用这个LIB库时,只需要将生成的LIB文件添加到新的项目的“库”选项卡中,然后就可以在源代码中通过#include指令来使用这个库中的函数了。

febgxu 发表于 2024-2-5 12:42

在Keil中,可以使用多文件打包生成LIB库,并在其他工程中使用LIB库

maqianqu 发表于 2024-2-5 13:31

如果你只想把特定的几个源文件编译成库而不包括工程中的其他部分,则从工程中移除不需要打包进库的文件。但通常情况下,只需保持需要打包为库的源文件即可。

olivem55arlowe 发表于 2024-2-5 14:21

使用LIB库时,确保在项目中已经添加了LIB库文件,否则编译时会提示找不到库文件。

sesefadou 发表于 2024-2-5 15:15

一旦LIB文件生成,你可以通过创建一个新的测试项目来验证它。在这个测试项目中,你需要包含LIB文件和相应的头文件,并编写一些简单的代码来调用LIB库中的函数。如果测试项目能够成功编译并运行,那么你的LIB库就应该是有效的。

lzbf 发表于 2024-2-5 21:42

编译完成后,会在“Output”文件夹中找到新生成的.lib文件,将其复制到安全的地方以备后用。

chenjun89 发表于 2024-2-5 21:52

意义不大吧,真要看你的代码应该有很多手段。

dspmana 发表于 2024-2-6 12:55

如果.c文件中使用了其他文件中的函数,那么这些被使用的文件也应当被包含在LIB库中。

lzmm 发表于 2024-2-6 13:56

使用LIB文件时,无法通过右键“Go to Definition”直接跳转到源码

robincotton 发表于 2024-2-6 17:22

可以通过右键单击文件名,然后选择"Options for File"来设置编译选项。在弹出的对话框中,可以设置文件的编译器选项、链接器选项等。

gygp 发表于 2024-2-6 20:06

在项目中添加需要打包的文件。可以通过菜单栏的"Project" -> "Add File to Group"来添加文件。选择需要添加的文件,然后点击"Open"按钮将其添加到项目中。

maudlu 发表于 2024-2-6 20:37

在Keil环境下,将多个C文件打包生成静态库(LIB文件)是一个方便实现代码复用和减少编译时间的做法

juliestephen 发表于 2024-2-6 21:17

LIB文件是一个编译后的二进制文件,其中包含了程序的各种函数和符号信息等

maqianqu 发表于 2024-2-6 21:50

在创建LIB库时,确保所有相关的文件都已经添加到项目中,并且它们的路径设置正确。
页: [1] 2 3
查看完整版本: Keil下多文件打包生成LIB库