Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.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++ 如何覆盖GCC';包含搜索的配置?_C++_C_Gcc_Configuration_Embedded Linux - Fatal编程技术网

C++ 如何覆盖GCC';包含搜索的配置?

C++ 如何覆盖GCC';包含搜索的配置?,c++,c,gcc,configuration,embedded-linux,C++,C,Gcc,Configuration,Embedded Linux,环境: Ubuntu,GCC4.6.3 使用qt4.8 默认情况下,我的include搜索顺序(由gcc-v报告)是: GCC-v报告: Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgvers

环境:

Ubuntu,GCC4.6.3 使用qt4.8

默认情况下,我的include搜索顺序(由gcc-v报告)是:

GCC-v报告:

Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v 
--with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' 
--with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs 
--enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr 
--program-suffix=-4.6 
--enable-shared --enable-linker-build-id --with-system-zlib 
--libexecdir=/usr/lib 
--without-included-gettext --enable-threads=posix 
--with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib 
--enable-nls 
--with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug 
--enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin 
--enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic 
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu 
--target=x86_64-linux-gnu
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
因此,似乎/usr/lib/。。。和/usr/包括。。。行可能来自内置的GCC配置。我是一个GCC/G++noob,所以我可能在这里错了-请根据需要更正

无论如何,我的问题是如何更改配置以使这些文件夹:

/usr/include/c++/4.6
/usr/include/c++/4.6/x86_64-linux-gnu/.
/usr/include/c++/4.6/backward
/usr/lib/gcc/x86_64-linux-gnu/4.6/include
/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed
是否也与.././sysroot相关

(要明确的是,我知道-I,但这些并没有在命令行或make文件中指定。)

通过使用-nostdinc并直接(使用-I)指定每个文件夹,我可以得到几乎正确的结果,但Qt元对象编译器在向其中一些系统包含文件夹提供数据时失败。因为我使用的是Qt,所以我想更改GCC配置的搜索路径,而不是用-I单独列出每个系统文件夹

如有任何建议,将不胜感激

谢谢,
Brad

作为一个可能的解决方案方向,可能对您的案例来说太多了:

事实上,据我所知,您试图实现的是针对不同系统映像的交叉编译。这项任务在嵌入式开发中非常常见,尽管并不容易。大多数想法是构建GCC,使其“认为”系统映像与正常情况不同

至少应该帮助你理解基本原则。
此外,它还包含其他有用的链接,如交叉编译常见问题。

本质上,是的,我希望交叉编译(对于嵌入式),但我不希望重建编译器。为每个环境重新构建单独的编译器似乎是不必要的浪费。也许我有点傻,但我希望我需要设置的只是配置数据。@BitBitz在电信行业工作了20多年后,我建议重建。:-)您不应该经常切换这样的环境,在您这样做一次或几次之后,您将更容易切换。但它在将来为您节省了很多时间,特别是如果您在团队之间分发此解决方案。使用交叉编译的gcc。还有一种可能性,只使用来自需要相同解决方案的人的结果。但下次您无法收到“就绪”解决方案:-)。
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v 
--with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' 
--with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs 
--enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr 
--program-suffix=-4.6 
--enable-shared --enable-linker-build-id --with-system-zlib 
--libexecdir=/usr/lib 
--without-included-gettext --enable-threads=posix 
--with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib 
--enable-nls 
--with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug 
--enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin 
--enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic 
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu 
--target=x86_64-linux-gnu
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
/usr/include/c++/4.6
/usr/include/c++/4.6/x86_64-linux-gnu/.
/usr/include/c++/4.6/backward
/usr/lib/gcc/x86_64-linux-gnu/4.6/include
/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed