QtCreator 找不到正在处理 linux 的 stddef.h
QtCreator cannot find stddef.h working on linux
我刚刚安装了 Qt Creator 4.1.0
基于 Qt 5.7.0 (GCC 4.9.1 20140922 (Red Hat 4.9.1-10),64 位)
在我修复了所有套件错误后,这个错误让我发疯,实际上我花了一些时间 google 寻找合适的编译器。我认为这可能与编译器版本有关:
/usr/include/c++/5.3.1/cstddef:45: error: stddef.h: No such file or
directory
我到处都看到 windows 的解决方案,但找不到 linux 的解决方案,有没有人有解决方法?
截图
rpm -qa | grep 开发 |排序
expat-devel-2.1.0-10.fc22.x86_64
fontconfig-devel-2.11.94-4.fc22.x86_64
freetype-devel-2.5.5-2.fc22.x86_64
gdbm-devel-1.11-4.fc22.x86_64
glibc-devel-2.21-13.fc22.i686
glibc-devel-2.21-13.fc22.x86_64
java-1.8.0-openjdk-devel-1.8.0.65-3.b17.fc22.x86_64
kernel-debug-devel-4.2.5-201.fc22.x86_64
kernel-debug-devel-4.2.6-200.fc22.x86_64
kernel-devel-4.2.6-200.fc22.x86_64
libdb-devel-5.3.28-12.fc22.x86_64
libdrm-devel-2.4.61-3.fc22.x86_64
libICE-devel-1.0.9-2.fc22.x86_64
libpng-devel-1.6.16-3.fc22.x86_64
libSM-devel-1.2.2-2.fc22.x86_64
libstdc++-devel-5.3.1-6.fc22.i686
libstdc++-devel-5.3.1-6.fc22.x86_64
libXau-devel-1.0.8-4.fc22.x86_64
libxcb-devel-1.11-8.fc22.x86_64
libXcursor-devel-1.1.14-4.fc22.x86_64
libXdamage-devel-1.1.4-6.fc22.x86_64
libXext-devel-1.3.3-2.fc22.x86_64
libXfixes-devel-5.0.1-4.fc22.x86_64
libXft-devel-2.3.2-2.fc22.x86_64
libXi-devel-1.7.4-2.fc22.x86_64
libXinerama-devel-1.1.3-4.fc22.x86_64
libXrandr-devel-1.4.2-2.fc22.x86_64
libXrender-devel-0.9.9-1.fc22.x86_64
libxshmfence-devel-1.2-1.fc22.x86_64
libXt-devel-1.1.4-10.fc22.x86_64
libXv-devel-1.0.10-2.fc22.x86_64
libXxf86vm-devel-1.1.4-1.fc22.x86_64
libX11-devel-1.6.3-1.fc22.x86_64
mesa-libGL-devel-10.6.9-1.20151008.fc22.x86_64
mesa-libGLU-devel-9.0.0-7.fc22.x86_64
perl-devel-5.20.3-328.fc22.x86_64
python3-devel-3.4.2-6.fc22.x86_64
qt-devel-4.8.7-4.fc22.x86_64
systemtap-devel-2.9-1.fc22.x86_64
systemtap-sdt-devel-2.9-1.fc22.x86_64
xorg-x11-proto-devel-7.7-12.fc21.noarch
zlib-devel-1.2.8-7.fc22.x86_64
如果编译器在终端上工作,它应该在 QtCreator 上工作。所以首先让它从终端运行。
从终端创建一个文件 main.cpp 包含:
#include <cstddef>
int main()
{
return 0;
}
然后输入命令:
gcc -H main.cpp -o main
如果编译成功,那一定是你在QtCreator中的kit定义有问题。可能确保 stddef.h
所在的文件夹在您的工具包的包含文件列表中。但是您不需要这样做。暂时,您可以将包含路径添加到您的项目(请参阅 How to add include path in Qt Creator?)以检查这是否确实是问题所在。然后你需要找到一种方法来永久修复该套件。
如果编译不起作用,请修复您的环境(可能使用 sashoalm 的评论 link)。 QtCreator 只是 IDE,如果你 运行 它使用损坏的编译器,它不会为你修复它。编译输出将显示从(-H
选项)中选择文件(cstddef
,然后是 stddef.h
)的位置。尝试 cpp -v
查看搜索包含文件的位置。
在我的机器上,编译输出给我:
. /usr/include/c++/4.8/cstddef ..
/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h ...
/usr/include/x86_64-linux-gnu/c++/4.8/bits/os_defines.h ....
/usr/include/features.h .....
/usr/include/x86_64-linux-gnu/sys/cdefs.h ......
/usr/include/x86_64-linux-gnu/bits/wordsize.h .....
/usr/include/x86_64-linux-gnu/gnu/stubs.h ......
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h ...
/usr/include/x86_64-linux-gnu/c++/4.8/bits/cpu_defines.h ..
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h Multiple include
guards may be useful for: /usr/include/c++/4.8/cstddef
/usr/include/x86_64-linux-gnu/bits/wordsize.h
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h
/usr/include/x86_64-linux-gnu/gnu/stubs.h
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h
在 /usr/lib/gcc/x86_64-linux-gnu/4.8/include
中找到 stddef.h
并且 cpp -v
给出:
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
注意:如果您手动创建了工具包,我建议您卸载 QtCreator。让 gcc 从终端运行,然后重新安装 QtCreator。这个应该会自动创建工具包,然后它们应该可以工作。
这是 QT 的常见问题我在所有版本的 Fedora 上都遇到过很多,问题是用户环境中缺少到“/usr/lib64/qt5/bin”的路径。
要在命令行检查路径存在的路径设置,请输入以下内容:echo $PATH
如果“/usr/lib64/qt5/bin”不存在,您应该会在响应中的某处看到它,然后按如下方式编辑主目录根目录中的 .bashrc 文件:-
添加QT5构建环境
if! [[ "$PATH" =~ "/usr/lib64/qt5/bin" ]]
then
PATH="/usr/lib64/qt5/bin:$PATH"
fi
就在“export PATH”语句上方
您需要注销并重新登录才能使更改生效。
我也遇到了这个问题,我不得不禁用 ClangCodeModel
插件。为此,我转到 Help->About Plugins...->Uncheck ClangCodeModel
(在 C++ 类别下)。重启 QT Creator 后,一切正常。我在 QT Forums
上找到了这个解决方案
我刚刚安装了 Qt Creator 4.1.0 基于 Qt 5.7.0 (GCC 4.9.1 20140922 (Red Hat 4.9.1-10),64 位)
在我修复了所有套件错误后,这个错误让我发疯,实际上我花了一些时间 google 寻找合适的编译器。我认为这可能与编译器版本有关:
/usr/include/c++/5.3.1/cstddef:45: error: stddef.h: No such file or directory
我到处都看到 windows 的解决方案,但找不到 linux 的解决方案,有没有人有解决方法?
截图
rpm -qa | grep 开发 |排序
expat-devel-2.1.0-10.fc22.x86_64
fontconfig-devel-2.11.94-4.fc22.x86_64
freetype-devel-2.5.5-2.fc22.x86_64
gdbm-devel-1.11-4.fc22.x86_64
glibc-devel-2.21-13.fc22.i686
glibc-devel-2.21-13.fc22.x86_64
java-1.8.0-openjdk-devel-1.8.0.65-3.b17.fc22.x86_64
kernel-debug-devel-4.2.5-201.fc22.x86_64
kernel-debug-devel-4.2.6-200.fc22.x86_64
kernel-devel-4.2.6-200.fc22.x86_64
libdb-devel-5.3.28-12.fc22.x86_64
libdrm-devel-2.4.61-3.fc22.x86_64
libICE-devel-1.0.9-2.fc22.x86_64
libpng-devel-1.6.16-3.fc22.x86_64
libSM-devel-1.2.2-2.fc22.x86_64
libstdc++-devel-5.3.1-6.fc22.i686
libstdc++-devel-5.3.1-6.fc22.x86_64
libXau-devel-1.0.8-4.fc22.x86_64
libxcb-devel-1.11-8.fc22.x86_64
libXcursor-devel-1.1.14-4.fc22.x86_64
libXdamage-devel-1.1.4-6.fc22.x86_64
libXext-devel-1.3.3-2.fc22.x86_64
libXfixes-devel-5.0.1-4.fc22.x86_64
libXft-devel-2.3.2-2.fc22.x86_64
libXi-devel-1.7.4-2.fc22.x86_64
libXinerama-devel-1.1.3-4.fc22.x86_64
libXrandr-devel-1.4.2-2.fc22.x86_64
libXrender-devel-0.9.9-1.fc22.x86_64
libxshmfence-devel-1.2-1.fc22.x86_64
libXt-devel-1.1.4-10.fc22.x86_64
libXv-devel-1.0.10-2.fc22.x86_64
libXxf86vm-devel-1.1.4-1.fc22.x86_64
libX11-devel-1.6.3-1.fc22.x86_64
mesa-libGL-devel-10.6.9-1.20151008.fc22.x86_64
mesa-libGLU-devel-9.0.0-7.fc22.x86_64
perl-devel-5.20.3-328.fc22.x86_64
python3-devel-3.4.2-6.fc22.x86_64
qt-devel-4.8.7-4.fc22.x86_64
systemtap-devel-2.9-1.fc22.x86_64
systemtap-sdt-devel-2.9-1.fc22.x86_64
xorg-x11-proto-devel-7.7-12.fc21.noarch
zlib-devel-1.2.8-7.fc22.x86_64
如果编译器在终端上工作,它应该在 QtCreator 上工作。所以首先让它从终端运行。
从终端创建一个文件 main.cpp 包含:
#include <cstddef>
int main()
{
return 0;
}
然后输入命令:
gcc -H main.cpp -o main
如果编译成功,那一定是你在QtCreator中的kit定义有问题。可能确保
stddef.h
所在的文件夹在您的工具包的包含文件列表中。但是您不需要这样做。暂时,您可以将包含路径添加到您的项目(请参阅 How to add include path in Qt Creator?)以检查这是否确实是问题所在。然后你需要找到一种方法来永久修复该套件。如果编译不起作用,请修复您的环境(可能使用 sashoalm 的评论 link)。 QtCreator 只是 IDE,如果你 运行 它使用损坏的编译器,它不会为你修复它。编译输出将显示从(
-H
选项)中选择文件(cstddef
,然后是stddef.h
)的位置。尝试cpp -v
查看搜索包含文件的位置。
在我的机器上,编译输出给我:
. /usr/include/c++/4.8/cstddef .. /usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h ... /usr/include/x86_64-linux-gnu/c++/4.8/bits/os_defines.h .... /usr/include/features.h ..... /usr/include/x86_64-linux-gnu/sys/cdefs.h ...... /usr/include/x86_64-linux-gnu/bits/wordsize.h ..... /usr/include/x86_64-linux-gnu/gnu/stubs.h ...... /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ... /usr/include/x86_64-linux-gnu/c++/4.8/bits/cpu_defines.h .. /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h Multiple include guards may be useful for: /usr/include/c++/4.8/cstddef /usr/include/x86_64-linux-gnu/bits/wordsize.h /usr/include/x86_64-linux-gnu/gnu/stubs-64.h /usr/include/x86_64-linux-gnu/gnu/stubs.h /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h
在 /usr/lib/gcc/x86_64-linux-gnu/4.8/include
stddef.h
并且 cpp -v
给出:
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
注意:如果您手动创建了工具包,我建议您卸载 QtCreator。让 gcc 从终端运行,然后重新安装 QtCreator。这个应该会自动创建工具包,然后它们应该可以工作。
这是 QT 的常见问题我在所有版本的 Fedora 上都遇到过很多,问题是用户环境中缺少到“/usr/lib64/qt5/bin”的路径。
要在命令行检查路径存在的路径设置,请输入以下内容:echo $PATH
如果“/usr/lib64/qt5/bin”不存在,您应该会在响应中的某处看到它,然后按如下方式编辑主目录根目录中的 .bashrc 文件:-
添加QT5构建环境
if! [[ "$PATH" =~ "/usr/lib64/qt5/bin" ]]
then
PATH="/usr/lib64/qt5/bin:$PATH"
fi
就在“export PATH”语句上方
您需要注销并重新登录才能使更改生效。
我也遇到了这个问题,我不得不禁用 ClangCodeModel
插件。为此,我转到 Help->About Plugins...->Uncheck ClangCodeModel
(在 C++ 类别下)。重启 QT Creator 后,一切正常。我在 QT Forums