前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >error: include location "/usr/include/" is unsafe for cross-compilation

error: include location "/usr/include/" is unsafe for cross-compilation

作者头像
10km
发布于 2019-05-25 16:32:33
发布于 2019-05-25 16:32:33
3.3K00
代码可运行
举报
文章被收录于专栏:10km的专栏10km的专栏
运行总次数:0
代码可运行

今天在对minigui做交叉编译,下面是编译的部分脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./configure \
	--host=$host \
	--with-runmode=ths \
	--prefix=$_prefix \
	|| exit -1
make -j8  || exit -1

如果不做交叉编译,host指定为当前机器的架构(x86_64-linux-gnu)则编译正常 如果设置为mips-linux-gnu进行交叉编译,就报错了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mips-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I../../.. -I/home/gyd/workspace/app/dependencies/libminigui-3.2.0/src/include -I/home/gyd/workspace/app/dependencies/libminigui-3.2.0/include -I/home/gyd/workspace/app/dependencies/libminigui-3.2.0/src/newgal/ -I/usr/include/ -D_DEBUG -Wall -Werror -ffunction-sections -fdata-sections -D_WITH_TARGET_NONE -D__MINIGUI_LIB__ -D_REENTRANT -D_MG_ENABLE_SPLASH=1 -D_GNU_SOURCE -O2 -Wstrict-prototypes -pipe -MT pcxvfb.lo -MD -MP -MF .deps/pcxvfb.Tpo -c pcxvfb.c  -fPIC -DPIC -o .libs/pcxvfb.lo
cc1: error: include location "/usr/include/" is unsafe for cross-compilation [-Werror=poison-system-directories]
In file included from /home/gyd/workspace/app/dependencies/libminigui-3.2.0/include/common.h:2256:0,
                 from pcxvfb.c:43:
/usr/include/pthread.h:681:6: error: '__regparm__' attribute directive ignored [-Werror=attributes]
      __cleanup_fct_attribute;
      ^
/usr/include/pthread.h:693:3: error: '__regparm__' attribute directive ignored [-Werror=attributes]
   __cleanup_fct_attribute;
   ^
/usr/include/pthread.h:716:6: error: '__regparm__' attribute directive ignored [-Werror=attributes]
      __cleanup_fct_attribute;
      ^
/usr/include/pthread.h:729:3: error: '__regparm__' attribute directive ignored [-Werror=attributes]
   __cleanup_fct_attribute;
   ^
/usr/include/pthread.h:738:6: error: '__regparm__' attribute directive ignored [-Werror=attributes]
      ;
      ^
In file included from /usr/include/sys/select.h:30:0,
                 from /usr/include/sys/types.h:219,
                 from /usr/include/stdlib.h:314,
                 from pcxvfb.c:38:
pcxvfb.c: In function 'PCXVFB_VideoInit':
/usr/include/bits/select.h:36:5: error: inconsistent operand constraints in an 'asm'
     __asm__ __volatile__ ("cld; rep; " __FD_ZERO_STOS         \
     ^
/usr/include/sys/select.h:93:26: note: in expansion of macro '__FD_ZERO'
 #define FD_ZERO(fdsetp)  __FD_ZERO (fdsetp)
                          ^
pcxvfb.c:509:13: note: in expansion of macro 'FD_ZERO'
             FD_ZERO(&rset);
             ^
/usr/include/bits/select.h:36:5: error: inconsistent operand constraints in an 'asm'
     __asm__ __volatile__ ("cld; rep; " __FD_ZERO_STOS         \
     ^
/usr/include/sys/select.h:93:26: note: in expansion of macro '__FD_ZERO'
 #define FD_ZERO(fdsetp)  __FD_ZERO (fdsetp)
                          ^
pcxvfb.c:527:13: note: in expansion of macro 'FD_ZERO'
             FD_ZERO(&rset);
             ^
cc1: all warnings being treated as errors

上面一大堆错误,不用头晕,只要看第一个错误才是根源

cc1: error: include location “/usr/include/” is unsafe for cross-compilation [-Werror=poison-system-directories]

很显然在交叉编译环境下,Makefile 中不应该出现-I/usr/include/ 这样的参数,但它确实出现了

mips-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I…/…/… -I/home/gyd/workspace/app/dependencies/libminigui-3.2.0/src/include -I/home/gyd/workspace/app/dependencies/libminigui-3.2.0/include -I/home/gyd/workspace/facelock/dependencies/libminigui-3.2.0/src/newgal/ -I/usr/include/ -D_DEBUG -Wall -Werror -ffunction-sections -fdata-sections -D_WITH_TARGET_NONE -D__MINIGUI_LIB__ -D_REENTRANT -D_MG_ENABLE_SPLASH=1 -D_GNU_SOURCE -O2 -Wstrict-prototypes -pipe -MT pcxvfb.lo -MD -MP -MF .deps/pcxvfb.Tpo -c pcxvfb.c -fPIC -DPIC -o .libs/pcxvfb.lo

报错为pcxvfb.c:490:13: error: impossible constraint in ‘asm’,虽然错误信息不一样,其实是一回事儿,就是因为有-I/usr/include/。 这篇文章的作者的解决办法就是修改Makefile,删除/usr/include相关的代码。野蛮而有效。 但我总觉得哪里不对。这么明显的错误不应该存在于MiniGUI的发行版本中需要用户修改Makefile来解决问题 找到关于pcxvfb图形引擎的说明,如下图

上面的表格红框标注部分说得很明白:pc_xvfbLinux/Win32平台下适合 PC 的虚拟缓冲区图形引擎。 注意是虚拟缓冲区图形引擎,它是开发调试阶段使用的图形引擎。也就是说在为目标平台(本文中是mips)交叉编译二进制版本的时候,这个引擎根本就不用不上,所以它就不应该被编译。 minigui的编译配置中有pc_xvfb 的编译开关,执行./configure --help | grep pcxvfb就可以查到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./configure --help | grep pcxvfb
  --enable-videopcxvfb     include PC Virtual FrameBuffer NEWGAL engine, such as qvfb, mvfb, gvfb or wvfb <default=yes>
  --enable-videortosxvfb   include RTOS Virtual FrameBuffer NEWGAL engine <default=no>. Please disable pcxvfb to enable rtosxvfb

于是在执行configure时果断加入--enable-videopcxvfb=no禁用videopcxvfb

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./configure \
	--host=$host \
	--with-runmode=ths \
	--prefix=$_prefix \
	--enable-videopcxvfb=no \
	|| exit -1
make -j8  || exit -1

再次编译就正常通过。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年10月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
电容分类和作用_电容的识别
一、电容的分类与作用 电容是由两个金属极,中间夹有绝缘材料(介质)构成的。由于绝缘材料的不同,所构成的电容器的种类也有所不同 按结构分:固定电容,可变电容,微调电容; 介质材料分:按介质材料可分为:气体介质电容,液体介质电容,无机固体介质电容,有机固体介质电容。 按极性分为:有极性电容和无极性电容。 我们最常见到的就是电解电容。 电容作用:电容在电路中具有隔断直流电,通过交流电的作用(隔直通交),因此常用于级间耦合、滤波、去耦、旁路及信号调谐等。
全栈程序员站长
2022/09/23
2.3K0
电容分类和作用_电容的识别
电阻电容电感的常用标注方法(手机电容和电阻的区分)
由两个金属极,中间夹有绝缘介质构成。电容的特性主要是隔直流通交流,因此多用于级间耦合、滤波、去耦、旁路及信号调谐。电容在电路中用“C”加数字表示,比如C8,表示在电路中编号为8的电容。
全栈程序员站长
2022/07/28
1.1K0
典型的电容有_电容的容量
用陶瓷材料作介质,在陶瓷表面涂覆一层金属(银)薄膜,再经高温烧结后作为电极而成。瓷介电容器又分 1 类电介质(NPO、CCG);2 类电介质(X7R、2X1)和 3 类电介质(Y5V、2F4)瓷介电容器。
全栈程序员站长
2022/09/23
6140
有极性电容和无极性电容的区别_非极性电容
理想的电容,本来是没有极性的。但是在实际中,为了获得大容量,就使用了某些特殊的材料和结构,这就导致了实际的电容有些是有极性的。常见的有极性电容有铝电解电容,钽电解电容等。电解电容一般是容量相对比较大的。如果要做一个大容量的无极性电容,就没那么容易了,体积会变得很大。这就是为什么在实际的电路中,为什么会有那么多的有极性电容了——因为它体积比较小,同时又因为这样的电路中电压只有一个方向,所以有极性的电容就能派上用场。我们使用有极性的电容,就是避开它的缺点,利用它的优点。我们可以这样来理解:有极性的电容实际上是一个只能按一个电压方向使用的电容。而无极性的电容,则两个电压方向都能使用。因此,单从电压方向这一点上来说,无极性的电容是比有极性的电容要好的。使用无极性的电容代替有极性的电容是完全可以的——只要容量、工作电压、体积等能满足要求即可替换。
全栈程序员站长
2022/09/23
7660
有极性电容和无极性电容的区别_非极性电容
电容分类_电解电容和薄膜电容的区别
  主要特点:损耗小,效率高;可根据要求制成直线式、直线波长式、直线频率式及对数式等
全栈程序员站长
2022/09/23
6460
电解电容为什么会爆炸?一文看明白!
电解电容是通过电解质作用在电极上形成的氧化层作为绝缘层的电容,通常具有较大的容量。电解质是液体、胶冻状富含离子的物质,大多数电解电容都是有极性的,也就是在工作时,电容的正极的电压需要始终比负极电压高。
MCU起航
2020/08/21
1.9K0
电解电容为什么会爆炸?一文看明白!
电容的基础知识
常用电容按介质区分有纸介电容、油浸纸介电容、金属化纸介电容、云母电容、薄膜电容、陶瓷电容、电解电容等。
全栈程序员站长
2022/07/15
3420
常用的电容分类[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172168.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/23
4310
电容科普知识
电容器是电子工程中的关键元件,它 能够储存电荷并在需要时释放电流 。其基本构造包括两个彼此绝缘的金属板(称为极板)和位于两者之间的电介质。电容值反映了器件储存电荷的能力,计算公式为C = Q/V,其中Q代表储存的电荷量,V为施加的电压。这一特性使电容器成为能量存储和电路稳定的重要工具,在各种电子设备中发挥着不可或缺的作用。
华东子
2024/11/07
2010
电容科普知识
模拟电路
一切都是原子构成,一个简单的原子模型可以简化成带正电荷的原子核在中央,周围环绕有若干个带负电的电子。同性相斥,异性相吸。
是小北a
2023/10/21
2310
模拟电路
电子基本元件介绍-电容「建议收藏」
两个相互靠近的导体,中间夹一层不导电的绝缘介质,这就构成了电容器。当电容器的两个极板之间加上电压时,电容器就会储存电荷。电容器的电容量在数值上等于一个导电极板上的电荷量与两个极板之间的电压之比。电容器的电容量的基本单位是法拉(F)。
全栈程序员站长
2022/07/28
1.1K0
电子基本元件介绍-电容「建议收藏」
电子元器件分类
元件与器件的分类是按照元器件制造过程中是否改变材料分子组成与结构来区分的,是行业划分的概念。在元器件制造行业,器件是由半导体企业制造,而元件则由电子零部件企业制造。
电子交流圈
2022/03/21
9840
电容(capacitor)
在我们选择无极性电容式,不知道大家是否有注意到电容的X5R,X7R,Y5V,COG等等看上去很奇怪的参数,有些摸不着头脑?
徐师兄
2022/08/29
8030
电容(capacitor)
matlab极性电容叫什么,什么是无极性电容[通俗易懂]
无极电容就是没有极性电源正负极的电容器,无极性电容器的两个电极可以在电路中随意的接入。因为这款电容不存在漏电的现象,主要应用在耦合,退耦,反馈,补偿,振荡等电路中。图为无极性电容参考图。
全栈程序员站长
2022/07/28
7350
matlab极性电容叫什么,什么是无极性电容[通俗易懂]
山东大学电路分析实验1 万用表的使用
万用表是集电压表、电流表和欧姆表于一体的多用途常用仪表。万用表的测量线路由多量程的直流电压表,电流表,多量程的交流电压表和欧姆表等多种线路组合而成。它可以用来测量直流电流、直流电压、交流电压、直流电阻以及经过外加的一些元件后,还可以测量交流电流、电容量、电感量和二极管的极性等。
timerring
2022/07/20
1K0
山东大学电路分析实验1 万用表的使用
铝电解电容的分类与区别
进入立隆后,可以看到铝电解电容大致可分为:普通型电解电容(引线型、阻燃型、基板自立型、螺栓型)、固态铝电解电容、固液混合铝电解电容。
爱上电路设计
2024/04/04
1620
铝电解电容的分类与区别
55条数字模拟电路总结
不是学这个得,但是一直是一个这方面得爱好者,整理一些笔记,记录一下 1、HC为COMS电平,HCT为TTL电平 2、LS输入开路为高电平,HC输入不允许开路,HC一般都要求有上下拉电阻来确定输入端无
云深无际
2021/04/14
9250
55条数字模拟电路总结
电解电容器如何失效?预防技巧整理
钽电容是一种有极性的电解电容。它使用金属钽作为阳极(+),使用二氧化锰(MnO2) 电解质作为阴极(-),并使用一层薄薄的氧化钽涂层作为电介质。在这篇博文中,我们将讨论钽电容器的特性、用途和故障原因。
IDC科技
2023/01/29
4150
最全电源电路图详解
用电路元件符号表示电路连接的图,叫电路图。电路图是人们为研究、工程规划的需要,用物理电学标准化的符号绘制的一种表示各元器件组成及器件关系的原理布局图,可以得知组件间的工作原理,为分析性能、安装电子、电器产品提供规划方案。
MCU起航
2022/05/16
1.3K0
最全电源电路图详解
Stm32的GPIO驱动继电器[通俗易懂]
三极管 三极管S8050-D: 直插的字体面向自己从左到右依次是发射极E,基极B,集电极C
全栈程序员站长
2022/09/12
5.6K0
Stm32的GPIO驱动继电器[通俗易懂]
相关推荐
电容分类和作用_电容的识别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文