Mac版 NXTの環境構築でハマったところ
はじめに
MacでNXTの環境構築をしていて
LegoNXTDevforMac/nxtOSEK/samples_jsp_c/Helloworld
内で
$make all
Compiling ../../ecrobot/../toppers_jsp/kernel/banner.c to banner.o
dyld: Library not loaded: /usr/local/lib/libmpfr.4.dylib
Referenced from: /Users/kuboaki/Downloads/LegoNXTDevforMac/gnuarm/bin/../libexec/gcc/arm-elf/4.4.2/cc1
Reason: image not found
arm-elf-gcc: Internal error: Trace/BPT trap: 5 (program cc1)
Please submit a full bug report.
See <http://gcc.gnu.org/bugs.html>; for instructions.
make: *** [build/kernel/banner.o] Error 1
みたいなエラーを経験して解決方法としてhoembrew
でmpfr
を入れるとできるのですが最新版だとエラーがでて失敗してしてしまいます.
なのでここを参考にして解決していきます
解決方法
git管理されている
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
にアクセスしてgit log
を用いて古いバージョンをインストールしていきます.
今回いじりたいのはmpfr.rb
なのでls mpfr.rb
で確認しておきましょう.
なければgit fetch --unshallow
で全てのコミットを持ってくるのもありです.(時間かかります)
特定のバージョンだけならbrew install [formula]
でいいかも
欲しいバージョンはmpfrの3.1.5なので
git log --oneline mpfr.rb | grep 3.1.5
出力
b46640ced7 mpfr: update 3.1.5 bottle.
578278b8fe mpfr 3.1.5
で指定バージョンのコミットを探します.
次に指定バージョンのコミットにcheckout
します.
git chekcout b46640ced7 mpfr.rb
ここでエディタを用いてmpfr.rb
を開いてください
そしてEOS.undent
と書かれている部分をEOS
と書き直してください
これはここみるとちょっとhomebrew内で書き方が変わったようです.
mpfr.rbを修正したらbrew install mpfr
をしてください
このとき最新版が入っててインストールできないよとか言われたら
brew unlink mpfr
でシンボリックリンクを外しちゃってください
あとでbrew switch
でバージョンを変えられます(Pathの問題)
これでインストールできるのですがbrew install
をそのまますると最新版が入れられてしまうため
HOMEBREW_NO_AUTO_UPDATE=1 brew install mpfr
と環境変数を先に指定してください
これで晴れてインストールできたら
brew info mpfr
mpfr: stable 4.0.2 (bottled)
C library for multiple-precision floating-point computations
https://www.mpfr.org/
/usr/local/Cellar/mpfr/3.1.5 (25 files, 3.6MB) *
Poured from bottle on 2019-10-10 at 17:05:42
/usr/local/Cellar/mpfr/4.0.2 (28 files, 4.7MB)
Poured from bottle on 2019-10-10 at 16:17:07
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mpfr.rb
==> Dependencies
Required: gmp ✔
==> Analytics
install: 56,913 (30 days), 157,299 (90 days), 731,046 (365 days)
install_on_request: 706 (30 days), 2,164 (90 days), 14,886 (365 days)
build_error: 0 (30 days)
こんな感じで出てればOK!
後始末として過去のコミットに移動していたので元の場所まで戻りましょう
git reset HEAD
git checkout .
さて長かったですけどこれで
LegoNXTDevforMac/nxtOSEK/samples_jsp_c/Helloworld
内に戻って
make all
すれば素直にmakeが通るかと
終わりに
うちの大学での一講義中に出た課題ですが
homebrewの解決策は意外と汎用的に出てるエラーかも?
他のバージョンを入れようと試みて
Error: mpfr: undefined method `undent' for #<String:0x00007fd3eb9a1ca0>
こんなエラーが出たらここを思い出して[formula].rbないのコードを見てみてください
参考資料
Author And Source
この問題について(Mac版 NXTの環境構築でハマったところ), 我々は、より多くの情報をここで見つけました https://qiita.com/Haaamaaaaa/items/cee1659583b095fef961著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .