ラベル gcc の投稿を表示しています。 すべての投稿を表示
ラベル gcc の投稿を表示しています。 すべての投稿を表示

CentOS6系でgcc (g++) 4.8を使う。

C++11のある程度の機能を有するgcc (g++) 4.8をインストールする。
# wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
# yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++
以下のコマンドで有効化できるようだが、私の環境では機能しなかった。
$ scl enable devtoolset-2 bash
おそらく、.bashrcの中でPATHを明示的に設定しているためだろう。なので、以下の記述を.bashrcに加えた。
DEVTOOLSET2_DIR=/opt/rh/devtoolset-2
DEVTOOLSET2_BIN_DIR=$DEVTOOLSET2_DIR/root/usr/bin
if [ -d $DEVTOOLSET2_BIN_DIR ]; then
  export PATH=$DEVTOOLSET2_BIN_DIR:$PATH
fi

GCCで特定の警告を一時的に無効にする

Makefileで-Wallを指定することがしばしばありますが、開発の最中、特定の警告を無効にしたいことがあります。たとえば、deprecatedな関数の使用に関する警告に対しては次のように制御します。
$ make CXXFLAGS=-Wno-deprecated-declarations
-Wnoを指定すれば、その警告は無効できるので、CXXFLAGS(やCFLAGS)にそれを指定します。

なお、autotoolsで作成したMakefileに対しては上記の対応で効果がありましたが、Makefileの書き方によっては、-Wnoオプションがコンパイラに渡されるようにする必要があるかもしれません。

GCC (G++)の定義済みマクロを調べる

GCC (C言語の場合)
gcc -dM -E -c -xc /dev/null
G++ (C++の場合)
gcc -dM -E -c -xc++ /dev/null