環境
Mac OS:Monterey 12.0.1
Node.js:16.3.0
npm:7.15.1
エラー内容
npm install した際、以下のようなビルドエラーが発生する。
MacBook-Air:××× $ npm install
(省略)
npm ERR! command failed
npm ERR! command sh -c node ./build.js
npm ERR! make: Entering directory '×××/node_modules/deasync/build'
npm ERR! CXX(target) Release/obj.target/deasync/src/deasync.o
npm ERR! make: Leaving directory '×××/node_modules/deasync/build'
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@7.1.2
npm ERR! gyp info using node@16.3.0 | darwin | x64
npm ERR! gyp info find Python using Python version 3.6.8 found at "/Users/×××/anaconda3/bin/python3"
(省略)
npm ERR! g++: error: unrecognized command line option ‘-std=gnu++14’
npm ERR! g++: error: unrecognized command line option ‘-stdlib=libc++’
(省略)
npm ERR! gyp ERR! node -v v16.3.0
npm ERR! gyp ERR! node-gyp -v v7.1.2
npm ERR! gyp ERR! not ok
npm ERR! Build failed
これらのエラーそのものを調べても、直接の解決方法が出てこなかったため、解決した手順をここに記載する。
解決手順
g++エラー部分を調べると、似たエラーがあり、どうやらgccのバージョンが低いことが原因のようである。
macbook-air:××× $ gcc --version
gcc (GCC) 4.8.5
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
gccを11.2.0_3にアップデートして、バージョンを確認するが、アップデートしたバージョンになっていない。
macbook-air:××× $ brew install gcc
macbook-air:×××$ gcc --version
gcc (GCC) 4.8.5
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
gccを確認すると、anacondaのgccを使ってしまっている。
macbook-air:×××$ which gcc
/×××/anaconda3/bin/gcc
インストールされたgccを確認し、~/.bash_profileに優先されるようにpathを追加する。
macbook-air:××× $ ls /usr/local/bin | grep gcc
gcc-11
gcc-ar-11
gcc-nm-11
gcc-ranlib-11
macbook-air:××× $ vi ~/.bash_profile
macbook-air:××× $ source ~/.bash_profile
gccのバージョンを確認する。
macbook-air:××× $ gcc --version
gcc (Homebrew GCC 11.2.0_3) 11.2.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
補足・参考情報
gccの環境構築については、こちらの記事がとても参考になります。