はじめに
Yosemiteにしてから、CやC++で作ったプログラムを実行するためにgccやg++を利用してコンパイルするのですが、Mavericksのときには出なかったwarningが出てきたのでこれから調査しようと思って今回の記事を立ち上げました。
なので、まだ解決したわけではなく、これから解決策があるかを検討していきたいと思っています。もし、このwarningの原因や解決方法を知っている方がおられればご教授していただければ幸いです。
ちなみにErrorではなかったので、./a.outでビルドはできました。
warning内容
warningの内容は次のようなものです。
warning: couldn't understand kern.osversion '14.0.0
後日経過記録
2014.10.30 経過記録
ちょっとopenGLの開発を進めようとしたら今回のこの現象を思い出したので、再度調べました。
とりあえず、以前読もうと思って読んでなかった
- [gcc 4.9.1 in OS X Yosemite - gcc: warning: couldn’t understand kern.osversion ‘14.0.0']
の記事を読みました。
すると、Homebrewを使って解消できるのではという話が。
まず、
brew edit gcc
を実行すると、gccのコードを修正できる。
たぶんこれはvim。
なので、iを押すと修正。escを押して:wqを入力してEnterを押せば上書き保存。もし上書きせず終了する場合はescを押して、:wを入力してEnterを押せばできる。
require "formula"
class Gcc < Formula
def arch
if Hardware::CPU.type == :intel
if MacOS.prefer_64_bit?
"x86_64"
else
"i686"
end
elsif Hardware::CPU.type == :ppc
if MacOS.prefer_64_bit?
"powerpc64"
else
"powerpc"
end
end
end
def osmajor
`uname -r`.chomp
end
修正する点というか、今回はosmajor関数の下に次のコードを継ぎ足すようにと書いてあった。
# edit by b.nelissen 20140805
# tobinjones patch gcc https://github.com/Homebrew/homebrew/issues/29845
patch do
url "https://gcc.gnu.org/bugzilla/attachment.cgi?id=33180"
sha1 "def0cb036a255175db86f106e2bb9dd66d19b702"
end
上書き保存したあと、brew install gcc を再度実行すればうまくいくはず!っと書いてあって実行しました...が、結果は自分はダメでした(^^;)
う〜ん。どうすれば...
っと思っていたら、そういえばHomebrewをupdateはこの前したけど、doctorしてないなぁっと思ってbrew doctorを行ったら、『gccが有効になっていません』というメッセージが。あ!これかっと思って、brew link gccを実行して、再度brew doctorを実行したらWarningが消えていたのでこれでできるはず!ッと思って実行したら...結果はダメでした(^^;)
う〜ん。...ん?まだ下にWarningが残っている...Xcode6.1が出てるからインストールしろよ!っと。...(^^;)
これか。これなのか...?!
ということで、xcode6.1をAppStoreからインストール。
そして今、PreferencesのDownloadsでダウンロード&インストール中です(^^;)
これがなかなか終わらない...。
これでダメだったらもう一度調べよう...。
ということで今日の記録はここまで。
2014.10.30 経過記録(2)
Qiitaが復旧作業中のため更新として記録が残っていないが、ちょっと上に書いた時から時間が立っているので新しく記録。
上の内容を追加で書いて、復旧作業中で更新できないことに病みながら研究のチケットで現状報告していた際に、あるQiitaの記事を発見してしまいました。
このチケットは「kern.osversion」でGoogle先生に聞いてた時に出てきた記事だったのですが、この記事の中に
If you want to keep some compatibility, you should not remove /usr/llvm-gcc-4.2.
The warning couldn't understand kern.osversion '14.0.0' can be ignored.
...え。答えが書いてある。
なんと、今まで出てたWarningはXcodeのgccだけではなく、純粋なgccを入れていたことで発生していたらしいです。(^^;)
つまり、『GCC, the GNU Compiler Collection』からダウンロード&インストールを以前したのが今回のWarningの原因。泣きたい。
まぁ、とりあえず原因がわかったので一安心しました(^^;)
てか、Appleは本格的にXcodeのgcc以外は使わせない方向に向かっているのか...?
関連記事
ちょっと調べたら以下の様な記事が出てきました。
- gcc 4.9.1 in OS X Yosemite - gcc: warning: couldn’t understand kern.osversion ‘14.0.0'
- Build errors on latest OS X 10.10 Yosemite with Xcode 6 on GCC 4.9.0
- ree-1.8.7-* fails to built on Yosemite #654
- [Bug target/61407] Build errors on latest OS X 10.10 Yosemite with Xcode 6 on GCC 4.8.3
まだちゃんと記事を読んでいないので、もしかしたらこちらの記事の中にヒントや解決策があるかもしれないです。
ちょっと今日は時間がないのはここまで。(2014.10.24)