在Mac上用clion作为编译器学c++出现这个问题。
出现这个错误的原因有多种,常见的是因为某些文件的缺失或者是文件的重复导致的。
这类错误查看的关键在于其上一行的文字。
对于文件缺少而导致错误的情况:
例如上图中的示例,其上一行文字为 ld:library not found for -lrxl,可以看出是缺失了某一文件而导致的错误,这行文字中的最后“ -lrxl ”:-l 代表着其前缀是“lib”,连着后面的 rxl,其名称为 librxl。即缺失了库 librxl。该错误多发生在从SVN 上拉取下代码的情况,是在代码上传的时候,静态库没有被上传到SVN 导致的。
iOS-SVN 无法上传静态库(.a)解决方案参考连接
对于文件重复而导致错误的情况:ld:4 duplicate symbols for XXXX,其中 duplicate 中文意思为“重复”
这行文字的意思在x86_64平台上编译的时候有4个重复的元素
实际上项目在导入一个其他的文件的时候,出现了错误,误将同样的一个文件导入到了一个错误的目录中,又在想导入的地方重新导入了一遍,导致编译器在编译的时候不知道该用哪一个,因为他们的内容一样,路径却不同。所以编译器就报上面的错误了。既然找到了问题所在,删除错误路径下的再重新运行就OK啦。参考链接