gcc编译器报错集锦

news/2024/11/17 4:48:48/

文章主要记录一下不常见的错误,供后续开发参考:


日期:2023-05-25 16:31:41
报错:cc1: all warnings being treated as errors
编译条件:

  • Ubuntu 18.04,
  • 编译器:aarch64-mix210-linux-gcc
  • 编译代码:usbip源码,从Linux内核(3.10)复制出来的

错误原因:

  • 使用snprintf函数,将最多31个字节写入大小介于0和255之间的区域,这本来只是一个 warning
  • 生成Makefile时,加了-Werror,将warning当成错误处理

解决方案:

  • 重新解压源码,使用grep "Werror" -rnw ./找到 -Werror 的地方,把它删掉,再执行./autogen.sh
  • sed 's/-Wall -Werror/-Wall/g' ./configure.ac

错误打印:

usbip_host_driver.c: In function 'usbip_host_export_device':
usbip_host_driver.c:359:45: error: '%s' directive output may be truncated writing up to 31 bytes into a region of size between 0 and 255 [-Werror=format-truncation=]snprintf(attr_path, sizeof(attr_path), "%s/%s:%d.%d/%s",^~
usbip_host_driver.c:359:2: note: 'snprintf' output 7 or more bytes (assuming 293) into a destination of size 256snprintf(attr_path, sizeof(attr_path), "%s/%s:%d.%d/%s",^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~edev->udev.path, edev->udev.busid,~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~edev->udev.bConfigurationValue, 0, attr_name);~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
Makefile:442: recipe for target 'libusbip_la-usbip_host_driver.lo' failed
make[2]: *** [libusbip_la-usbip_host_driver.lo] Error 1

日期:2023-05-25 16:57:12
报错:编译没出错,运行时缺少动态库,且路径为相对路径./…/…/common/finger…
编译条件:

  • Ubuntu 18.04,
  • 编译器:aarch64-mix210-linux-gcc,使用arm-hisiv100nptl-linux没出现此情况
  • Makefile:CFLAGS += ./…/…/common/finger/lib_himix200/libzaz_himix200_linux.so,使用相对路径的库,但其他库也使用相对路径却不会。

错误原因分析:

  • 运行aarch64-mix210-linux-objdump -p CK6I_UPPER | grep NEEDED查看依赖动态库,也是相对路径:
    NEEDED libiconv.so.2
    NEEDED ./…/…/common/finger/lib_himix200/libzaz_himix200_linux.so

  • 猜测是链接时使用相对路径的原因,具体原因不清楚,尝试去掉

解决方案:

  • 改Makefile,-L ./../../common/finger/lib_himix200/ -lzaz_himix200_linux

错误打印:

# ./a.out
./a.out: error while loading shared libraries: ./../../common/finger/lib_himix200/libzaz_himix200_linux.so: cannot open shared object file: No such file or directory

http://www.ppmy.cn/news/84017.html

相关文章

2023-04-23 学习记录--C/C++-邂逅C/C++(中)

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 上一篇:邂逅C/C(上) 一、if语句 ⭐️ (一)、格式 🍭 if…

【突发奇想 之 vector使用时性能测试】

目录: 前言分析vector不同操作对时间的影响1.for循环中使用 size()成员函数2.初始化时初始化为0,与其他值3.vector分配容量问题4. vector赋值操作5. 遍历:下标和迭代器 总结 前言 打怪升级:第90天 分析vector不同操作对时间的影响…

成功加冕!用友大易获评2023最佳招聘管理软件供应商

人力资源服务业旗帜性商业奖项2023金帜奖(HRFLAG AWARDS)颁奖典礼于近日隆重举行。经过3个月的评选,用友大易从615家人力资源服务机构中脱颖而出,最终荣获「2023最佳招聘管理软件供应商」奖项。 2023金帜奖(HRFLAG AWARDS)是人力资源服务行业旗帜性的商业…

PMP考试都是什么题?

PMP新版大纲加入了ACP敏捷管理的内容,说是敏捷混合题型占到了 50%,但是这次318的考试,敏捷题占了大半,都说敏捷和情景快要占到80%-90%。 所以有友友说开了四个小时盲盒,题目读不懂,或者觉得4个选项都不对或…

Redhat7.3linux系统防火墙命令总结

在Linux系统部署皕杰报表后,需要关闭防火墙或者开放报表工具使用的端口,才能通过浏览器访问报表。 在linux中如何关闭防火墙或开启端口呢?基本上是基于命令操作。通过几天的实践,总结了有关防火墙的操作命令,现记录如…

从绿色节能趋势看存储资源盘活系统HBlock

数据中心约超过一半的成本是电费,数据存储系统作为数据中心三大件之一,能耗也约占三分之一,面对非结构化数据量的快速增长挑战,以及国家对数据中心绿色节能要求的提高,分布式存储的绿色节能愈来愈加重要。 分布式存储…

本地vue搭建的web网站项目app如何发布到互联网?

对于非专业人来说,提到 Vue并不熟悉。Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建。 简单来说,Vue是干什么用的呢?Vue通过提供了一套声明式的、组件化的编程模型,帮助你高效地开发用…

如何利用Python中的pymysql库来操作Mysql数据库,看这篇就够啦~

为了使python连接上数据库,你需要一个驱动,这个驱动是用于与数据库交互的库,本文是向大家介绍了如何利用python中的pymysql库来操作mysql数据库。 1、什么是pymysql? pymysql是从python连接到mysql数据库服务器的接口&#xff0c…