嵌入式技术论坛
直播中

贾永世

7年用户 1725经验值
私信 关注
[问答]

在RTT-studio中怎么样加入.lib文件进行编译?

1、我在Keil中先生成了一个.lib库文件,直接复制到RTT-studio中进行编译,但是出现了找不到相关函数错误。如下图:

2.jpg

2、然后修改了库文件的包含路径,如下图:

2.jpg

没提示函数错误了,但缺提示找不到库文件路径。

c:/rt-threadstudio/repo/extract/toolchain_support_packages/arm/gnu_tools_for_arm_embedded_processors/5.4.1/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ld.exe: cannot find -lF:/ZNY/Smart_XONE/STM32L496ZG_V20200720/STM32L496ZG_V20200720/applications/MAL/Delay_MAL/Delay_MAL.lib
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:107: rtthread.elf] Error 1

2.jpg

回帖(4)

贾伟刚

2023-2-22 14:24:17
studio 使用的是 gcc 工具链,与keil 使用的armcc 工具链的链接器对库文件的格式不兼容,可以去库的提供商那里寻找下gcc 版本的库文件,通常具有lib 前缀和.a 或者.so 后缀,比如libDelay_MAL.a
如果找到了gcc 版本的库文件 ,可以在工程属性中添加,如下图
举报

贾永世

2023-2-22 14:24:23
在RTT-studio中怎样把自己的.c文件生成.a或.so的库文件?
RTT-studio能不能完善这个自动生成库文件的功能啊?
举报

贾伟刚

2023-2-22 14:24:34
2.jpg
举报

贾永世

2023-2-22 14:24:43
现在在RTT-studio中生成.a库文件可以了,但是好像如果原来的.c文件中包含如:
INIT_BOARD_EXPORT(fn) 申明的初始化函数、
INIT_PREV_EXPORT(fn) 申明的初始化函数、
INIT_DEVICE_EXPORT(fn) 申明的初始化函数、
INIT_COMPONENT_EXPORT(fn) 申明的初始化函数、
INIT_ENV_EXPORT(fn) 申明的初始化函数、
INIT_APP_EXPORT(fn) 申明的初始化函数、
上述宏初始化的申明的函数,都不能在库文件中执行(比如:出现找不到一些设备的提示,证明这些宏没执行到),同时最终的可执行文件(用.a库文件链接的)比用源文件(用.c文件编译链接的)的文件大小要小很多。
这种情况是怎么回事?如果想不动源文件(.c文件),要如何避免这些问题?
请大神指点。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分