如何一次获取所有重复的符号链接器错误? 我在xCu码中构建了一个C++项目,它使用两个库。比如说libX.a和libY.a。在libX.a和libY.a上有一些常见的函数定义,我得到了重复的符号链接器错误
这很好,但我一次只得到一个错误。一旦我修复了错误,我将得到下一个重复的符号错误,这个过程将重复 这种方法有两个问题:如何一次获取所有重复的符号链接器错误? 我在xCu码中构建了一个C++项目,它使用两个库。比如说libX.a和libY.a。在libX.a和libY.a上有一些常见的函数定义,我得到了重复的符号链接器错误,c++,xcode,linker,g++,C++,Xcode,Linker,G++,这很好,但我一次只得到一个错误。一旦我修复了错误,我将得到下一个重复的符号错误,这个过程将重复 这种方法有两个问题: 我没有重复错误的确切数量。我想知道找到的所有重复符号。这样我就可以在两个开发人员之间进行修复 与构建库然后链接生成可执行文件所需的时间相比,修复错误的速度足够快 这可能吗?我的意思是,是否可以设置任何标志,以便链接器一次给出所有重复的符号 编辑:添加示例代码以进行澄清: 让我在这里举个例子: test1.h void foo() { } void bar() { } test
void foo()
{
}
void bar()
{
}
test2.h
void foo()
{
}
void bar()
{
}
test1.cpp
#include "test1.h"
void j()
{
foo();
bar();
}
test2.cpp
#include "test2.h"
void k()
{
foo();
bar();
}
现编:
g++ -c test1.cpp
g++ -c test2.cpp
现在链接:
g++ -o final test1.o test2.o
尽管有两个重复的符号foo和bar,但我只得到foo的错误,如下所示:
ld: duplicate symbol foo() in test2.o and test1.o
collect2: ld returned 1 exit status
ld: duplicate symbol bar() in test2.o and test1.o
collect2: ld returned 1 exit status
一旦我修复了foo,我就会得到如下所示的bar错误:
ld: duplicate symbol foo() in test2.o and test1.o
collect2: ld returned 1 exit status
ld: duplicate symbol bar() in test2.o and test1.o
collect2: ld returned 1 exit status
我想要的是同时得到这两个错误。因此,我修复了所有这些问题,然后一次链接
谢谢
致以最良好的祝愿,
Marc您可以使用nm命令列出库中的所有符号,并排序和uniq-d打印副本。比如:
nm -j test1.o test2.o | sort | uniq -d
这还将列出它们共享的未定义符号。你可以得到一个使用nm-u的列表
有点像黑客,但它可能会让你更快到达那里。你可以使用nm命令列出库中的所有符号,然后排序和uniq-d打印副本。比如:
nm -j test1.o test2.o | sort | uniq -d
这还将列出它们共享的未定义符号。你可以得到一个使用nm-u的列表
有点小技巧,但它可能会让你更快到达那里。我不知道Xcode,但是从命令行运行GNU链接器时,通常会列出所有重复的符号-不需要额外的开关。我不知道Xcode,但是从命令行运行GNU链接器时,通常会列出所有重复的符号-不需要额外的开关。