Kali Linux下clang++编译C++代码报linker command failed错误求助
报错原因
- 核心错误
/usr/bin/ld: cannot find -lstdc++是因为Kali Linux默认环境未安装Clang链接所需的GNU C++标准库开发组件 - Makefile存在两处逻辑问题:
- 未显式指定编译目标文件的编译器,导致.o文件用g编译、最终链接用clang,不同编译器生成的目标文件混用可能引发兼容问题
- 链接阶段错误添加了
-I Bureaucrat.hpp参数,-I是头文件搜索路径参数,仅编译阶段需要,链接阶段无需传入
可行解决方案
- 安装缺失的依赖包,执行命令:
sudo apt update && sudo apt install -y libstdc++-dev gcc g++
- 修正Makefile内容,修正后的参考如下:
SRCS = main.cpp \ Bureaucrat.cpp \ OBJS = $(SRCS:.cpp=.o) # 统一使用clang++作为编译器,也可改为g++ CPP = clang++ RM = rm -f CPPFLAGS = -Wall -Wextra -Werror -I. NAME = Bureaucrat all: $(NAME) # 显式指定.cpp生成.o的编译规则,统一用指定编译器 .cpp.o: $(CPP) $(CPPFLAGS) -c $< -o $@ $(NAME): $(OBJS) Bureaucrat.hpp $(CPP) $(CPPFLAGS) -o $(NAME) $(OBJS) clean: $(RM) $(OBJS) fclean: clean $(RM) $(NAME) re: fclean $(NAME) .PHONY: all clean fclean re
- 清理之前生成的错误目标文件并重新编译:
make re
内容的提问来源于stack exchange,提问作者DarkSide77
相关产品推荐
相关产品推荐

