gpt4 book ai didi

c++ - 如何一次获取所有重复的符号链接(symbolic link)器错误?

转载 作者:行者123 更新时间:2023-11-28 01:11:01 25 4
gpt4 key购买 nike

我正在使用两个库的 XCode 中构建一个 C++ 项目。比如说 libX.a 和 libY.a。在 libX.a 和 libY.a 上有一些常见的函数定义,我收到重复符号链接(symbolic link)器错误。

这很好,但我一次只收到一个错误。修复错误后,我将收到下一个重复符号错误并重复此过程。

这种方法有两个问题:

  1. 我没有准确的重复错误数。我想知道找到的所有重复符号。这样我就可以在几位开发人员之间分发修复程序。

  2. 与构建库然后链接生成可执行文件所花费的时间相比,修复错误的速度足够快。

这可能吗?我的意思是,是否可以通过设置任何标志使链接器一次给出所有重复的符号。

编辑:添加示例代码以进行说明:让我在这里举个例子:

测试1.h

void foo()
{
}

void bar()
{
}

测试2.h

void foo()
{
}

void bar()
{
}

测试1.cpp

#include "test1.h"

void j()
{
foo();
bar();
}

测试2.cpp

#include "test2.h"

void k()
{
foo();
bar();
}

现在编译:

g++ -c test1.cpp
g++ -c test2.cpp

现在链接:

g++ -o final test1.o test2.o

即使有 2 个重复的符号 foo 和 bar,我只得到 foo 的错误,如下所示:

ld: duplicate symbol foo()    in test2.o and test1.o
collect2: ld returned 1 exit status

修复 foo 后,出现如下所示的 bar 错误:

ld: duplicate symbol bar()    in test2.o and test1.o
collect2: ld returned 1 exit status

我希望同时得到这两个错误。这样我就可以修复所有这些问题,然后一次性链接。

谢谢

最好的问候,马克

最佳答案

您可以使用 nm 命令列出库中的所有符号,并使用 sort 和 uniq -d 打印重复项。像这样的东西:

nm -j test1.o test2.o | sort | uniq -d

这还将列出它们共有的 undefined symbol 。您可以使用 nm -u 获取这些列表。

有点 hack,但它可能会让你更快。

关于c++ - 如何一次获取所有重复的符号链接(symbolic link)器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3244760/

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