【发布时间】:2023-01-31 09:32:06
【问题描述】:
我正在尝试链接一个我无法控制的共享库。这个库有一个未定义的符号(nm 输出):
U __aarch64_swp1_acq_rel
这似乎是在 libgcc.a 中定义的:
[user@fedora ~]$ nm -a /usr/lib/gcc/aarch64-redhat-linux/12/libgcc.a | grep swp1_acq_rel
0000000000000000 T __aarch64_swp1_acq_rel
[user@fedora ~]$ objdump -t /usr/lib/gcc/aarch64-redhat-linux/12/libgcc.a | grep swp1_acq_rel
0000000000000000 g F .text 000000000000002c .hidden __aarch64_swp1_acq_rel
但是每当我尝试链接时,我都会在这个问题的标题中得到错误。我明白这个符号是隐藏的动态链接(如果我错了请确认)。所以我的问题是当我正在使用(和链接)的共享库没有定义它时,链接这个 libgcc 符号的正确方法是什么。
我预计可以使用我系统中的 libgcc.a 解析此符号。为什么要隐藏?
【问题讨论】:
-
产生错误的确切链接命令是什么?
标签: c++ linux shared-libraries linker-errors libgcc