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
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_NEW_PYTHON_SUPPORT=ON -DINSTALL_PYTHON_EXAMPLES=ON -DWITH_TBB=ON -DWITH_V4L=ON -DINSTALL_C_EXAMPLES=ON -DBUILD_EXAMPLES=ON -D
TL;DR:如果之前没问题,突然出现这个错误,那可能是因为改了include搜索的路径(比如定义了和环境变量)。如果确实如此,试试把这些变量取消或者从中删除含有的文件夹。
在用gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu进行交叉编译时,出现报错:
/home/Likejiang/5GNR/gcc-linaro-7.5.0-2019.12-x8664aarch64-linux-gnu/aarch64-linux-gnu/include/c++/7.5.0/cstdlib:75:15: fatal error: stdlib.h:
No such file or directory
#include_next <std
原创文章,转载请注明出处,谢谢! 作者:清林,博客名:飞空静渡 #include如果从纯粹的text文件来说,#include的作用就是搜索它后面指示的文件,并把这个文件的内容加到当前的文件中。一般我们编程时,都是包含一些与.h为后缀的头文件,但是它可以包含任何后缀的任何形式的text文件的,而不仅仅是.h为后缀的头文件。
这是因为环境变量里面你在CPLUS_INCLUDE_PATH变量引入/usr/include。解决方法就是删除/usr/include引用,如果你是终端临时设置的重启终端便可以解决问题。如果你是~/.bashrc里面设置的把/usr/include去掉即可。此外还有一种情况是你零时在终端设置了。
stdlib 头文件即standard library标准库头文件。stdlib.h里面定义了五种类型、一些宏和通用工具函数。 类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()、realloc()、free...
error: ‘sin’ was not declared in this scope
QPointF up_startPt1(m_coverBallRadius*cos(30.0*Rad), -m_coverBallRadius*sin(30.0*Rad));
解决办法:
添加函数的头文件
#include <complex>
// An hig