#include_next <stdlib.h> qt fatal error: stdlib.h: 没有那个文件或目录

qt4编译正常,改成qt5后遇到问题

usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o tmp/obj/main.o main.cpp
In file included from /usr/include/c++/7/bits/stl_algo.h:59:0,
                 from /usr/include/c++/7/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:110,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qtguiglobal.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qtwidgetsglobal.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qapplication.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QApplication:1,
                 from main.cpp:1:
/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: 没有那个文件或目录
 #include_next <stdlib.h>
               ^~~~~~~~~~
compilation terminated.
make: *** [Makefile:21224:tmp/obj/main.o] 错误 1

原因:

这是由于gcc7已经吧stdlib.h纳入了libstdc++以进行更好的优化,C Library的头文件stdlib.h使用 Include_next,而include_next对gcc系统头文件路径很敏感

解决方法

1 在.pro文件中添加如下一行:  
​​​​​​​DEFINES += ENABLE_PRECOMPILED_HEADERS=OFF

生效 

2  在.pro文件中添加如下一行:

QMAKE_CFLAGS_ISYSTEM = -I
解决问题

在.pro文件中去除如下一行:

INCLUDEPATH +=/usr/include
也可以解决问题

 

最后,为了兼容qt4\qt5以及交叉编译

使用下面方式。

greaterThan(QT_MAJOR_VERSION, 4): {
    QT += widgets
    QMAKE_CFLAGS_ISYSTEM = -I
}

 

https://stackoverflow.com/questions/52532936/usr-include-c-7-cstdlib7515-fatal-error-stdlib-h-no-such-file-or-directo

编译opencv 3.2时,报错"/usr/include/c /7/cstdlib:75:15: fatal error: stdlib.h: 没有那个文件目录 #include_next <stdlib.h> ^~~~~~~~~~",可以通过以下解决办法解决这个问题。 一种解决办法是在/build目录下的cmake文件中添加指令"-D ENABLE_PRECOMPILED_HEADERS=OFF"。例如,可以执行以下命令来编译opencv: cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D ENABLE_PRECOMPILED_HEADERS=OFF \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON .. 另一种解决办法是安装缺失的文件。例如,在编译pycaffe时报错"fatal error: numpy/arrayobject.h没有那个文件目录",可以尝试使用以下命令来安装缺失的文件: sudo apt-get install ... 这些方法可以帮助您解决编译opencv时出现的错误"/usr/include/c /7/cstdlib:75:15: fatal error: stdlib.h: 没有那个文件目录 #include_next <stdlib.h> ^~~~~~~~~~"和编译pycaffe时出现的错误"fatal error: numpy/arrayobject.h没有那个文件目录"。希望能对您有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [编译opencv 3.2 报错 /usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or ...](https://blog.csdn.net/Undefinedefity/article/details/122018986)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件目录](https://download.csdn.net/download/weixin_38747025/14839519)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值