-x链接标志导致Mac OSX 10.9上的链接错误(错误?)

 StrAiGhT-OuT 发布于 2023-01-01 14:32

根据ld手册页,-x link标志禁止将非全局符号放入输出文件的符号表中.这些符号对于调试很有用,但在运行时不使用.但是这个标志在Mavericks上造成链接错误.例如,以下源文件:

struct Yo
{
    Yo() {}
};

void useYo()
{
    Yo yo;
}

编译/链接如下:

c++ -arch x86_64 -bundle -Wl,-x -o tc.so tc.cpp

产生以下输出:

ld: internal error: atom not found in symbolIndex(__ZN2YoC1Ev) for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

构造函数Yo :: Yo()是问题所在:

c++filt __ZN2YoC1Ev
Yo::Yo()

删除-x链接标志可以解决问题.在构造声明之外移动构造函数实现也可以解决问题.这段代码编译/链接很好:

struct Yo
{
    Yo();
};

Yo::Yo() {}

void useYo()
{
    Yo yo;
}

这是我的编译器信息:

Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.3.0
Thread model: posix

这是clang或链接器中的错误,还是有一些原因我不应该使用-x链接标志?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有