Skip to content

gcc-arm-wrap -- ARM 系アーキテクチャで brew install コマンドが異常終了する問題を回避する為の gcc ラッパー

License

Notifications You must be signed in to change notification settings

z80oolong/gcc-arm-wrap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

gcc-arm-wrap -- ARM 系アーキテクチャで brew install コマンドが異常終了する問題を回避する為の gcc ラッパー

概要

ARM 系アーキテクチャにおいて、 Linuxbrew を用いて各種パッケージをビルドする時、 brew install を起動すると、以下のようなエラーメッセージを出力して brew install コマンドが異常終了する場合があります。

  *** Error in `gcc-4.9': double free or corruption (top): 0x000b6a30 ***

この問題は、 brew install コマンドを実行する際に、 gcc コンパイラの起動時に、最適化オプションの一つとして -march=nativegcc コマンドに渡しており、また、 gcc コマンドがこのオプションに基づいて ARM 系アーキテクチャの識別を行う際に、 現行の gcc コンパイラのバージョンにおいて適切に -march=native のオプションを処理出来ない事が原因であると考えられます。

この git リポジトリに同梱されている ruby スクリプト cc は、 Linuxbrew において、 gcc コマンドに渡されるオプションのうち、 -march=native 及び -mcpu=native を除去するための gcc コンパイラのラッパースクリプトです。

gcc ラッパーのインストール

gcc ラッパースクリプト ccLinuxbrew に導入するには、以下の brew install コマンドを実行します。

  $ brew install https://raw.githubusercontent.com/z80oolong/gcc-arm-wrap/master/gcc-arm-wrap.rb

また、以下のように git clone コマンドによってこの git リポジトリを取得した後に、以下の通りに brew install コマンドを実行しても、 gcc ラッパースクリプトを導入出来ます。

  $ git clone https://github.com/z80oolong/gcc-arm-wrap.git
  $ cd gcc-arm-wrap
  $ brew install ./gcc-arm-wrap.rb

上記コマンドの実行後は、 gcc ラッパースクリプト cc の導入の他、 gcc, g++, gcc-4.9, g++-4.9 等のコマンドも cc へのシンボリックリンクとして生成されます。

注意点

この gcc ラッパースクリプト cc は、ディレクトリ $HOMEBREW_PREFIX/bin (ここに、 $HOMEBREW_PREFIX は、 Linuxbrew の導入先となるディレクトリ) 以下に導入されるスクリプトです。

従って、この git リポジトリに同梱されている Formula である gcc-arm-wrap.rb は、 Linuxbrew に gcc コンパイラを導入するための Formula である、 gcc@4.9, gcc@5, gcc@6, gcc@7, gcc@8 等と衝突する Formula であることに注意して下さい。

謝辞

ARM アーキテクチャにおける Linuxbrew の異常終了の問題の概要及びその回避については、 Mokutsumo 氏によるブログ "自己実現武呂具" の記事の "printipiのコンパイルで *** Error in 'g++': double free or corruption (top): 0x01099c18 ***" を参考にしました。 Mokutsumo 氏には心より感謝致します。

また、 Linuxbrew 本体のリポジトリの開発を行っている Shaun Jackman 氏を始めとする Linuxbrew の開発コミュニティの各氏に心より感謝致します。

そして最後に、 Linuxbrew の全ての事に関わる全ての皆様に心より感謝致します。

使用条件

本リポジトリは Linuxbrew において使用するラッパースクリプトとして、 Z.OOL. (mailto:zool@zool.jpn.org) が著作権を有し、 MIT License に基づいて配布されるものとします。詳細については、本リポジトリに同梱する LICENSE を参照して下さい。

About

gcc-arm-wrap -- ARM 系アーキテクチャで brew install コマンドが異常終了する問題を回避する為の gcc ラッパー

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages