R_PowerPC のバックアップの現在との差分(No.4) - アールメカブ

アールメカブ


R_PowerPC のバックアップの現在との差分(No.4)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
[[Rの備忘録]]

Intel Mac 版 R でパッケージを作成する場合,ppc 用のバイナリではライブラリのリンクがうまくいっていない場合がある.

-- ppc で,パッケージ全体ではなく,ソースファイルのコンパイルを行ってみると,ちゃんとライブラリが作成される.
ところが,読み込みはできない.実行時の ppc 版 mecab ライブラリとのリンクがうまくいっていない.

 $ otool -L Library/R/2.8/library/RMeCab/libs/ppc/RMeCab.so 
 Library/R/2.8/library/RMeCab/libs/ppc/RMeCab.so:
        RMeCab.so (compatibility version 0.0.0, current version 0.0.0)
         /Library/Frameworks/R.framework/Versions/2.8/Resources/lib/
     libR.dylib (compatibility version 2.8.0, current version 2.8.1)
        /System/Library/Frameworks/CoreFoundation.framework/
           Versions/A/CoreFoundation (compatibility version 150.0.0,
                 current version 476.17.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0,
                 current version 7.4.0)
        /usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, 
                current version 1.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, 
               current version 111.1.3)

intel Mac ではこうなる


 $ otool -L Rlibs/RMeCab/libs/i386/RMeCab.so 
 Rlibs/RMeCab/libs/i386/RMeCab.so:
	RMeCab.so (compatibility version 0.0.0, current version 0.0.0)
	/usr/local/lib/libmecab.1.dylib (compatibility version 2.0.0,
               current version 2.0.0)
	/Library/Frameworks/R.framework/Versions/2.8/Resources/
             lib/libR.dylib (compatibility version 2.8.0,
                current version 2.8.1)
	/System/Library/Frameworks/CoreFoundation.framework/
           Versions/A/CoreFoundation (compatibility version 150.0.0, 
                current version 476.17.0)
	/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, 
                current version 7.4.0)
	/usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, 
                current version 1.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0,
               current version 111.1.3)



-- Makefile を工夫しなければならない.
ただ,ライブラリだけ別にコンパイルして,intel Mac 版で作成したパッケージの ppc フォルダの中身と差し替えてしまうという手もある.


 $  sudo gcc_select 3.3
 $
 $ export MACOSX_DEPLOYMENT_TARGET=10.4
 $ R CMD SHLIB RMeCab/src/RMeCab.cpp -dynamiclib 
            -L/usr/local/lib -lmecab
 $  cp RMeCab/src/RMeCab.so 
           ~/Library/R/2.8/library/RMeCab/libs/ppc/
 $ tar zcfv RMeCab_0.67.ppc.tgz RMeCab/

-- 動作確認には ppc 実機が必要だが,作成は intel 版でも可能.

 $ R_ARCH=/ppc R CMD SHLIB RMeCab.cpp -dynbamilib -L/usr/local/lib -lmecab


https://stat.ethz.ch/pipermail/r-help/2008-February/155403.html


http://osdir.com/ml/lang.r.mac/2008-07/msg00005.html


https://stat.ethz.ch/pipermail/bioconductor/2008-November/025336.html