gpt4 book ai didi

c - 将几个依赖库链接到我的 "bare metal"C 应用程序中

转载 作者:行者123 更新时间:2023-12-04 05:33:55 25 4
gpt4 key购买 nike

我正在 ST ARM-Cortex-M3 上开发裸机 C 应用程序。我还开发了可用于所有这些应用程序的库。

我曾经使用 Keil ARM-MDK,但想转移到 GNU-GCC。因此,我下载了最新版本的 GCC 并开始重新编译代码。

尽管已经回答了与此类似的问题,但它并没有解决我的问题,因此我发布了我的问题。

我有以下问题:
Lib_Flash 有一个函数 Read_Flash()。 Lib_AppCfg 在 Lib_Flash 中链接,因为它使用 Read_Flash()。
我的应用程序 (App) 在 Lib_Flash 和 Lib_AppCfg 中都有链接。应用程序还使用 Read_Flash() 进行某些特定的 FLASH 检查。
在 Keil MDK-ARM 中它运行良好。
使用 GCC,当构建使用 Lib_AppCfg 的函数时,我收到错误,指出 Read_Flash() 是“ undefined reference ”。
我不确定问题出在哪里。是在构建 Lib_Appcfg 的链接中还是链接 App 时出现问题?

请指教。如果您需要其他信息,请告诉我。

最佳答案

默认情况下,GNU 链接器会按照命令行中列出的顺序搜索库一次。因此,如果列表中较晚的库引用了在较早的库或目标文件中定义的符号,则无法解析它。

简单的解决方案是使用库分组;这会导致链接器重复搜索库列表,直到无法解析更多的合成符为止。如果单独调用链接器 (ld),则链接器选项为:

--start-group _Flash _AppCfg --end-group

或替代形式
-( _Flash _AppCfg -)

GNU linker manual详情。如果通过 gcc 间接驱动链接器,您可以通过 -Wl option 传递链接器选项,类似于:
-Wl,-(,_Flash,_AppCfg,-)

我想。

关于c - 将几个依赖库链接到我的 "bare metal"C 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12217526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com