前往小程序,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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
minigui:mgplus交叉编译警告 include locationi
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/83088803
10km
2019/05/25
8750
解决编译mips gcc 5.2.0
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/80639076
10km
2019/05/25
2.4K0
不得不说,minigui真的很坑
开发项目在嵌入式平台上使用MiniGui作为用户界面开发工具,在工作之余准备在ubuntu14.04上搭建一个测试环境,这样代码测试起来比较方便。
杨永贞
2020/08/05
3.8K0
不得不说,minigui真的很坑
minigui:解决gvfb编译报错undefined reference to symbol 'XkbGetIndicatorState'
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/83380130
10km
2019/05/25
7890
编译FFMpeg n4.2.5、OpenCV-3.4.16、OpenCV-4.5.4
做测试时需要用OpenCV。虽然网络上有大量的关于编译OpenCV的教程,但是还是遇到了问题。因此记录了编译的过程,希望以后能更加顺利。
hankfu
2021/12/10
2.5K0
minigui:静态编译连接mgncs库时遇到的xml2的问题
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/83047021
10km
2019/05/25
1.9K0
CMake搭建编译环境总结
  交叉编译算是每个嵌入式开发者都会经历的一道坎吧,通俗的描述就是搭建Arm板代码编译环境,让代码能够在Arm板子上跑起来。常用到的编译工具为Makefile和CMake,本篇记录下CMake的常用技巧。
开源519
2022/12/01
2.5K0
Ubuntu14:cmake生成Makefile编译caffe过程(OpenBLAS/CPU only)
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/53142309
10km
2019/05/25
1.4K0
Mac 安装 ClickHouse 报错: Mac 10.15.4: Cannot find objcopy
then find the file ~/ClickHouse/CMakeLists.txt
一个会写诗的程序员
2021/06/21
2.6K0
GroundingDINO安装报错解决 - plus studio
细读报错,我们会发现是编译过程中少了一个Python.h 的头文件导致编译pycocotools失败。
plus sign
2024/02/29
1K0
GroundingDINO安装报错解决 - plus studio
Postgresql中的C/C++混编(JIT)
GCC编译的三个.o文件llvmjit、llvmjit_deform、llvmjit_expr
mingjie
2023/10/13
2670
Postgresql中的C/C++混编(JIT)
Linux应用编程基本概念
Linux应用编程涉及到在Linux环境下开发和运行应用程序的一系列概念。以下是一些涵盖Linux应用编程的基本概念:
Linux兵工厂
2024/02/17
2040
Linux应用编程基本概念
ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍[通俗易懂]
  在讲解各编译器之前,必须先了解一下以下这些文件。这些文件在编译器目录下或者编译生成目标平台的可执行程序时经常见到。此外,还需要注意区分 Windows 平台 和 Linux 平台的文件。
全栈程序员站长
2022/06/28
16K0
ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍[通俗易懂]
【全志T113-i】OK113i-S开发板CAN通信C代码测试
飞凌官方手册中关于CAN测试部分使用的是命令行进行的简单测试,实际开发过程中还是要使用C代码去操作CAN设备,本帖主要讲解怎么使用C代码对CAN设备进行读写的收发操作。
阿志小管家
2024/02/02
2080
jrtplib linux编译,linux下jrtplib-3.9.1编译与安装.txt[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。 一、安装包准备 1、进入官网http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jrtplib
全栈程序员站长
2022/07/25
3K0
利用VScode和cmake编译构建C++工程代码
可能我们有时候已经习惯了使用大型IDE去编写一些C++工程,经常使用大型IDE例如VS、Clion、VC++6.0,这些大型的软件都已经为我们提供好了编译链接工具,我们不需要自己去手动设置编译器,也不需要了解相关知识就可以写代码进行编译运行。
老潘
2023/10/19
1.3K0
利用VScode和cmake编译构建C++工程代码
C/C++常见gcc编译链接错误解决方法
用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdynamic”指定链接共享库,使用示例: -Wl,-Bstatic -lmysqlclient_r -lssl -lcrypto -Wl,-Bdynamic -lrt -Wl,-Bdynamic -pthread -Wl,-Bstatic -lgtest ("-Wl"表示是传递给链接器ld的参数,而不是编译器gcc/g++的参数。) 1) 下面是因为没有指定链接参数-lz(/usr/lib/libz.so,/usr/lib/libz.a ) /usr/local/mysql/lib/mysql/libmysqlclient.a(my_compress.c.o): In function `my_uncompress': /home/software/mysql-5.5.24/mysys/my_compress.c:122: undefined reference to `uncompress' /usr/local/mysql/lib/mysql/libmysqlclient.a(my_compress.c.o): In function `my_compress_alloc': /home/software/mysql-5.5.24/mysys/my_compress.c:71: undefined reference to `compress' 2) 下面是因为没有指定编译链接参数-pthread(注意不仅仅是-lpthraed) /usr/local/mysql/lib/mysql/libmysqlclient.a(charset.c.o): In function `get_charset_name': /home/zhangsan/mysql-5.5.24/mysys/charset.c:533: undefined reference to `pthread_once' 3) 下面这个是因为没有指定链接参数-lrt /usr/local/thirdparty/curl/lib/libcurl.a(libcurl_la-timeval.o): In function `curlx_tvnow': timeval.c:(.text+0xe9): undefined reference to `clock_gettime' 4) 下面这个是因为没有指定链接参数-ldl /usr/local/thirdparty/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup': dso_dlfcn.c:(.text+0x4c): undefined reference to `dlopen' dso_dlfcn.c:(.text+0x62): undefined reference to `dlsym' dso_dlfcn.c:(.text+0x6c): undefined reference to `dlclose' 5) 下面这个是因为指定了链接参数-static,它的存在,要求链接的必须是静态库,而不能是共享库 ld: attempted static link of dynamic object 如果是以-L加-l方式指定,则目录下必须有.a文件存在,否则会报-l的库文件找不到:ld: cannot find -lACE 6) GCC编译遇到如下的错误,可能是因为在编译时没有指定-fPIC,记住:-fPIC即是编译参数,也是链接参数 relocation R_x86_64_32S against `vtable for CMyClass` can not be used when making a shared object 7) 下面的错误表示gcc编译时需要定义宏__STDC_FORMAT_MACROS,并且必须包含头文件inttypes.h test.cpp:35: error: expected `)' before 'PRIu64' 8) 下面是因为在x86机器(32位)上编译没有指定编译参数-march=pentium4 ../../src/common/libmooon.a(logger.o): In function `atomic_dec_and_test': ../../include/mooon/sys/atomic_gcc.h:103: undefined reference to `__sync_sub_and_fetch_4' 9) 下列错误可能是因为多了个“}” error: expected d
一见
2018/08/10
7.9K0
编译WebAssembly版本的FFmpeg(ffmpeg.wasm):(2)使用Emscripten编译
上一篇文章:编译WebAssembly版本的FFmpeg(ffmpeg.wasm):(1)准备
智影Yodonicc
2022/04/15
2.1K0
编译WebAssembly版本的FFmpeg(ffmpeg.wasm):(2)使用Emscripten编译
学习笔记0507----LAMP架构
LAMP:Linux+Apache(httpd)+Maridb(Mysql)+PHP,常用来搭建动态网站或者服务器的开源软件。
嘻哈记
2020/11/24
1.9K0
Redis的搭建和Redis的集群搭建
1、Redis的官网:https://redis.io/     Redis的测试网站:http://try.redis.io/
别先生
2018/07/31
1.2K1
Redis的搭建和Redis的集群搭建
相关推荐
minigui:mgplus交叉编译警告 include locationi
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文