关于编译“bits/stdc++.h”头文件

首先讲讲“bits/stdc++.h”这个头文件,一般都叫做万能头文件,比赛的时候用它基本上就不用写其他的头文件了,大部分的在线判题都支持。G++ 4.4以上就支持这个头文件了

最近遇到的问题是在macos系统下,这段时间苹果发布了macOS High Sierra系统,刚好电脑硬盘空余多,内存也比较大,我就用虚拟机装了一下,首次在终端中输入g++命令,会提示安装命令行开发者工具,照着提示安装了,写段测试代码测试一下

先创建源代码文件

vim 1.test

源代码

#include "bits/stdc++.h"
using namespace std;
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

保存退出

ESC
:wq

再输入

g++ -x c++ -o 1.out 1.test

发现报错

muyangren907$ g++ -x c++ -o 1.out 1.test
1.test:1:10: fatal error: 'bits/stdc++.h' file not found
#include "bits/stdc++.h"
         ^~~~~~~~~~~~~~~
1 error generated.

错误原因是找不到’bits/stdc++.h’

为什么会出现这种情况呢,我们不妨看看这里所谓的g++

输入

g++ -v

结果如下

muyangren907$ g++ -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin17.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

显然,这用的还是clang的编译器,那如何使用正宗的GUN的GCC和G++呢
首先我们得安装 homebrew,这可是个好东西,官网上的说明是

Homebrew
macOS 缺少的套件管理工具
[Homebrew官网](https://brew.sh/index_zh-cn.html)

安装方法很简单,在终端上输入

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

即可,接下来就按操作安装
另外提一句,貌似将DNS设置为8.8.8.8会加快下载速度,国内宽带对Github的支持不是很好

安装好homebrew之后,依次输入如下指令

brew tap homebrew/versions
brew update
brew install gcc49

等待安装完毕,输入

g++-4.9 -v

查看如下

muyangren907$ g++-4.9 -v
Using built-in specs.
COLLECT_GCC=g++-4.9
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc@4.9/4.9.4/libexec/gcc/x86_64-apple-darwin17.3.0/4.9.4/lto-wrapper
Target: x86_64-apple-darwin17.3.0
Configured with: ../configure --build=x86_64-apple-darwin17.3.0 --prefix=/usr/local/Cellar/gcc@4.9/4.9.4 --libdir=/usr/local/Cellar/gcc@4.9/4.9.4/lib/gcc/4.9 --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-4.9 --with-gmp=/usr/local/opt/gmp@4 --with-mpfr=/usr/local/opt/mpfr@2 --with-mpc=/usr/local/opt/libmpc@0.8 --with-cloog=/usr/local/opt/cloog --with-isl=/usr/local/opt/isl@0.12 --with-system-zlib --enable-libstdcxx-time=yes --enable-stage1-checking --enable-checking=release --enable-lto --enable-plugin --with-build-config=bootstrap-debug --disable-werror --with-pkgversion='Homebrew GCC 4.9.4' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues MAKEINFO=missing --disable-nls --enable-multilib
Thread model: posix
gcc version 4.9.4 (Homebrew GCC 4.9.4) 

编译刚才的源代码可用如下命令

g++-4.9 -x c++ -o 1.out 1.test

成功编译

另外,可能大多数人都使用xcode在macos上编程,但code blocks更为精简,下面提一下关于如何让codeblocks在macos上也能编译“bits/stdc++.h”头文件的问题

首先下载code blocks,官网上搜索下载即可,解压后就是个单文件

首次进入会有编译器选择界面,选第一个,进去主界面依次点击

Settings -> Compiler -> Global compiler settings -> Toolchain executables
Compiler installation directory

点右侧方框,弹出文件夹选择窗口,选择带有g++-4.9的bin文件夹的位置,我的位置

/usr/local

关于编译“bits/stdc++.h”头文件_第1张图片

下面的几个空诸如

C compiler
C++ compiler
Linker for dynamic libs

如图设置即可
最后点击OK

你可能感兴趣的:(关于编译“bits/stdc++.h”头文件)