【问题标题】:Wierd linkage behavior - gcc libraries奇怪的链接行为 - gcc 库
【发布时间】:2016-03-03 10:27:54
【问题描述】:

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

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 可以识别的符号。好像只少了两个新符号。

有什么想法吗?

提前致谢。

【问题讨论】:

  • -lA -lB -lA -lB,你的意思是? :)
  • @Elad Weiss 你能发布你执行的gcc 命令来构建你的软件吗?

标签: c compilation compiler-errors linker linker-errors


【解决方案1】:

Ghosh 的回答:-lA -lB -lA -lB 已修复 :)

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

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

事实上我相信即使是 -lB -lA 也能解决它:)

谢谢!

【讨论】:

    猜你喜欢
    • 2018-02-20
    • 2011-12-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多