编译构建失败:链接器无法识别‘--push-state--no-as-needed’选项
解决链接器错误:
unrecognized option '--push-state--no-as-needed' 嘿,这个问题其实是链接器选项的格式写错了!你看报错里的--push-state--no-as-needed,这是把两个独立的链接器选项硬拼到一起了,链接器根本认不出这个四不像的选项。
具体解决步骤:
- 先找到你的构建配置文件(比如CMakeLists.txt、Makefile,或者Qt项目的.pro文件),搜索有没有类似
-Wl,--push-state--no-as-needed的写法。这个错误的根源就是这里把两个选项连起来了,没分开。 - 把它改成正确的格式:如果是通过
g++的-Wl,参数传递给链接器,要写成-Wl,--push-state,--no-as-needed——用逗号把两个选项分开;如果是直接给链接器的参数,就写成--push-state --no-as-needed(用空格分隔)。 - 清理之前的构建缓存(比如
make clean,或者CMake项目删掉build目录重新配置),然后重新构建,这个链接器错误应该就消失了。
小科普一下:
--push-state和--no-as-needed是GNU链接器的两个独立选项:前者用来保存当前的链接状态,后者是关闭--as-needed的默认行为(强制链接所有指定的库,哪怕代码里没用到),必须分开传递才能被正确识别。
内容的提问来源于stack exchange,提问作者nwp
相关产品推荐
相关产品推荐

