c++编译错误总结

  1. g++ error: can’t map file, errno=22
    大概率是链接库路径问题:如-L /usr/lib,中间不能有空格
    使用blade时,linkflags = [’-L/usr/lib’,],前面的-L不能省略(这个和incs不同,导入头文件路径中-I不用写)
  2. g++ -Werror
    这个选项会将编译时遇到的warning变成error,即执行更严格的编译;
  3. 关于blade的一些默认编译选项:blade会默认添加一些编译选项,如-Werror=non-virtual-dtor,可以在warning = []中使用如-Wno-error=non-virtual-dtor将该编译项关掉;
  4. zsh下blade alt不能使用:blade的install脚本中将bladefunction的执行结果输出文件从~/.bashrc改为相应的~/.zshrc
  5. Mac上使用blade编译去链接拍 rebuilt库时出现unknown option: --rpath-link=xxx
    答:Linux下指定lib库查找位置用-Wl,-rpath=xxx,Mac下使用-Wl,-rpath, xxx;
  6. internal compiler error: Killed (program cc1plus)
    编译时机器内存不够,导致该错误,可以通过增加swap内存解决;
dd if=/dev/zero of=/swapfile bs=1k count=2048000    创建分区文件,大小2G
mkswap /swapfile      生成swap 文件系统
swapon /swapfile       激活swap 文件
  1. 采用g++ -static-libstdc++ main.cpp编译,提示错误:/usr/bin/ld: cannot find -lstdc++
    yum install libstdc++默认安装的事libstdc++的动态库(.so库),需要安装静态库(.a库)
    libstdc++静态库安装:yum install libstdc++-static,但是没有找到合适的源,因此手动下载库并安装;
    下载地址:https://pkgs.org/
wget https://vault.centos.org/centos/8/PowerTools/x86_64/os/Packages/libstdc++-static-8.5.0-4.el8_5.x86_64.rpm

安装libstdc++静态库:

rpm -ivh libstdc++-static-8.5.0-4.el8_5.x86_64.rpm --nodeps
  1. expected initializer before ‘xxxxx’
    答:错误在于前一行少了,或者头文件中函数原型没有分号;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值