首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误ld:架构x86_64的9个重复符号-生成一个dylib

错误ld:架构x86_64的9个重复符号-生成一个dylib
EN

Stack Overflow用户
提问于 2022-07-26 13:47:48
回答 1查看 195关注 0票数 0

当我试图使用这些文件( ld: 9 duplicate symbols for architecture x86_64 main.c、subhook_unix.o、subhook_x86.o、subhook.o )在MacOS上创建一个dylib时,我收到了最后一个错误。

下面是我使用的命令: g++ -dynamiclib -fPIC -o Gexecute.dylib subhook_unix.o subhook_x86.o subhook.o

下面是返回的错误。

代码语言:javascript
复制
    subhook_x86.o
    subhook.o
duplicate symbol '_subhook_read_dst' in:
    subhook_x86.o
    subhook.o
duplicate symbol '_subhook_unprotect' in:
    subhook_unix.o
    subhook.o
duplicate symbol '_subhook_disasm' in:
    subhook_x86.o
    subhook.o
duplicate symbol '_subhook_install' in:
    subhook_x86.o
    subhook.o
duplicate symbol '_subhook_remove' in:
    subhook_x86.o
    subhook.o
duplicate symbol '_subhook_free' in:
    subhook_x86.o
    subhook.o
duplicate symbol '_subhook_free_code' in:
    subhook_unix.o
    subhook.o
duplicate symbol '_subhook_alloc_code' in:
    subhook_unix.o
    subhook.o

我预测我使用了不正确的命令,或者.o文件中的代码有错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-26 14:00:47

看起来,您链接了同一个库的三个版本,当然,它们之间有相同的函数或变量名。试着把其中一个连接起来。

因为林克说:

重复符号

“符号”指函数名或变量名,所以“重复符号”意味着链接的文件中有许多相同的名称。通过错误日志,这些名称看起来像函数名,而这些函数总是出现在另外两个.o文件中,因此我得出结论,这三个lib是相同的,但版本不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73124582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档