c - 奇怪的链接行为 - gcc 库

标签 c compilation compiler-errors linker linker-errors

我有两个库 libA、libB 和一个应用程序“app”。 libB 使用 libA 中的函数,“app”使用两个库中的符号。 我向 libA 添加了两个新函数 - 'print_data' 和 'print_data_char',我仅在 libB 中调用它们,现在得到:

undefined reference to 'print_data'
undefined reference to 'print_data_char'

这是实际的命令

arceb-linux-gcc apps/applications/dpi/dpi_app/build/Obj_linux_arc_sim/src/main.o apps/applications/dpi/dpi_app/build/Obj_linux_arc_sim/src/utl.o ./dpe/dp/lib/ezdp_linux_arc_sim.a ./dpe/sft/lib/sft_linux_arc_sim.a ./dpe/dpi/lib/dpi_linux_arc_sim.a  -O2 -o apps/applications/dpi/dpi_app/bin/ezdpi_app_linux_arc_sim

libA = sft_linux_arc_sim.a

libB = dpi_linux_arc_sim.a

我用 nm 检查了 libA:

ezpacket_internal.o:
00000001 a __ARCCOMPACT__
         U __udivsi3
         U fprintf
         U fputc
         U fputs
         U fwrite
0000001c T print_data
00000000 T print_data_char

libA 中还有 libB 可以识别的其他符号。似乎只缺少两个新符号。

有什么想法吗?

提前致谢。

最佳答案

Ghosh 的回答:-lA -lB -lA -lB 修复了它:)

(我花了大约一个小时才明白这不是拼写错误)

显然,链接时库顺序很重要。请参阅:https://stackoverflow.com/questions/45135/...

事实上,我相信即使 -lB -lA 也能解决这个问题:)

谢谢!

关于c - 奇怪的链接行为 - gcc 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35769504/

相关文章:

c - 在 C11 中使用 _Noreturn

iphone - 何时使用 Xcode 分布式构建功能

c++ - 错误 : redefinition of class

c - 在内核空间上实现 timecounter_init (clocksource.h) 会出现无效的 ISA 状态错误

c - 链接到 MATLAB 生成的代码

haskell - 在本地使用 UndecidableInstances pragma 是否会对编译终止产生全局影响?

matlab - PERSISTENT声明必须在使用任何变量之前

c++ - 如何访问指针 vector 数组中的前向列表,这些 vector 指向指针 vector 以转发对象的指针列表?

c - 位掩蔽问题的好的解决方案是什么?

macos - mac clang ld 出现错误 : unknown option: --gc-sections