Rcpp.package.skeleton を介してデフォルトの hello world プログラムを使用すると、インストール時にこのエラーが「時々」発生します。
dyn.load(file, DLLpath = DLLpath, ...) のエラー: 共有オブジェクト '/home/usrname/R/x86_64-pc-linux-gnu-library/3.0/helloWorld/libs/helloWorld.so' を読み込めません: /home/usrname/R/x86_64-pc-linux-gnu-library/3.0/helloWorld/libs/helloWorld.so: 未定義のシンボル: _ZTIN4Rcpp7RObjectE.
つまり、約10回の試行で、最初のインストール時にエラーが発生したのは1回だけですが、最終的には、いくつかの微調整の後、すべてのパッケージが最終的にエラーを取得し、すべての変更がコードとすべての.oから削除されたとしても、 .so と tar ファイルが削除され、ライブラリが R でアンインストールされると、パッケージは再度ビルドされません。
私の最終目標は、-lz コンパイル オプションを使用していくつかの zlib 関数をいくつかのコードに含めることです。したがって、hello_world に「いくつかの調整」を加えると、次のようになります
。 1. Makevars の PKG_LIBS var に -lz を追加します
。 .cpp ファイル
3. const char* a を作成します
4. a を使用して gzopen(a,a) を呼び出します
私のプロセスは
1. R で: Rcpp.package.skeleton("testPackage", attributes = TRUE)
2. ターミナルで: R CMD build testPackage
3. ターミナルで: R CMD INSTALL testPackage
最後にもう一度テストするために、問題なくコンパイルし、-lz を追加しましたが問題ありませんでした。次に #include を追加すると、エラーが発生しました。削除してもエラーが発生します。
1.このエラーの原因を知っている人はいますか?
2. 元に戻したコードが再度インストールされるように修復する方法はありますか?
3. そうでない場合、zlib をコードに組み込む別の方法はありますか (sourceCpp は正常に動作するようです)。
私はUbuntu 12.04.2 LTS
Rバージョン3.01
Rcpp_0.10.3を使用しています
解決策の更新:
Makevars を編集するときに、誤って変数の周りに余分な引用符を追加していました:
PKG_LIBS = " $/usr/bin/Rscript -e "Rcpp:::LdFlags()"
-lz"
zlib を含める正しい方法は、行に -lz を追加することです:
PKG_LIBS = $/usr/bin/Rscript -e "Rcpp:::LdFlags()"
-lz
まだエラーが発生した後、Makevars を正しい形式に戻そうとすると、インストール時に引き続きエラーが発生することは事実です。また、ときどき (テスト実行から 2/6)、コードに zlib 関数を含めたり追加したりするときにエラーが表示されるだけでインストールされることも事実です。