Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从Linux应用程序中排除/usr/include路径?_C++_Linux_Qt_Redhat - Fatal编程技术网

C++ 如何从Linux应用程序中排除/usr/include路径?

C++ 如何从Linux应用程序中排除/usr/include路径?,c++,linux,qt,redhat,C++,Linux,Qt,Redhat,我遇到了一个无法避免的问题。Redhat 6(或大多数linux软件包)附带了一个默认的QT软件包,在/usr/lib和/usr/include文件夹中安装了头/etc 现在,我想链接到一个新版本的QT,而不删除旧版本。不幸的是,由于标题位于/include/文件夹中,gcc会自动找到它们,然后使用错误的include文件(而不是我在别处看到的文件) 我似乎无法阻止编译器自动执行此操作。我以前只是通过手动删除旧的库/头来解决这个问题,但从长远来看,这是一个糟糕的解决方案 我不认为这个问题是特定于

我遇到了一个无法避免的问题。Redhat 6(或大多数linux软件包)附带了一个默认的QT软件包,在/usr/lib和/usr/include文件夹中安装了头/etc

现在,我想链接到一个新版本的QT,而不删除旧版本。不幸的是,由于标题位于/include/文件夹中,gcc会自动找到它们,然后使用错误的include文件(而不是我在别处看到的文件)

我似乎无法阻止编译器自动执行此操作。我以前只是通过手动删除旧的库/头来解决这个问题,但从长远来看,这是一个糟糕的解决方案

我不认为这个问题是特定于QT的,它只是碰巧是我当前的实例

有什么建议吗


非常感谢:)

如果您通过
-I
选项提供较新Qt安装的包含目录,则应在标准包含目录(即/usr/include等)之前搜索该目录从搜索路径中完全删除标准include目录可能不是一个好主意,因为在那里也会找到标准头(请注意,Qt头本身很可能包含标准头,如果找不到,则无法工作)


但是,如果您确实不希望搜索标准的include目录,那么选项
-nosdinc
应该可以满足您的需要。

我的问题与使用的qmake版本不正确有关。它正在查找qmake的早期版本,尽管它来自qt4,但它链接到了错误的include


更新qmake路径可以解决此问题。

您只需要将include标志更改为gcc-请参阅,我已经这样做了,但在编译项目时,我仍然获得/usr/include/QtCore etc路径,而不是CPLUS\u LIBRARY\u路径。我真的不知道该怎么办。如果这能解决你的问题,那就继续吧,把你的答案标记为公认的答案,让未来的观众知道什么是有效的。是的,我一直在等着这样做——发布后需要我等一个小时左右才能这样做:)