如果之前有人問過這個問題,我提前道歉,但經過幾天的搜索,我一直沒能找到合適的答案。
我有一個包,其中有幾個使用 Rcpp 用 C 撰寫的小函式(包可以在這里找到)。當嘗試在 Linux 系統上安裝此包時(本地安裝和通過 Github Actions - Ubuntu 18.04、20.04),編譯程序成功,但 R 無法加載包,因為.so找不到檔案。Mac 和 Windows 系統運行良好,在這些系統上測驗時沒有 R CMD CHECK 問題。
我想知道是否有任何方法可以解決這個問題?本來想加點什么的,.Makevars不知道加什么。
非常感謝你提前。
─ installing *source* package ‘CBEA’ ...
** using staged installation
** libs
g -std=gnu 11 -I"/usr/local/lib/R/include" -DNDEBUG -I'/__w/_temp/Library/Rcpp/include' -I/usr/local/include -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -Wall -pedantic -c RcppExports.cpp -o RcppExports.o
g -std=gnu 11 -I"/usr/local/lib/R/include" -DNDEBUG -I'/__w/_temp/Library/Rcpp/include' -I/usr/local/include -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -Wall -pedantic -c gmeans.cpp -o gmeans.o
g -std=gnu 11 -shared -L/usr/local/lib/R/lib -L/usr/local/lib -o CBEA.so RcppExports.o gmeans.o -L/usr/local/lib/R/lib -lR
installing to /tmp/RtmpwFufM0/Rinst8982598ffd0c/00LOCK-CBEA/00new/CBEA/libs
** R
** data
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
*** copying figures
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
Error: package or namespace load failed for ‘CBEA’ in library.dynam(lib, package, package.lib):
shared object ‘cbea.so’ not found
Error: loading failed
Execution halted
ERROR: loading failed
─ removing ‘/tmp/RtmpwFufM0/Rinst8982598ffd0c/CBEA’
uj5u.com熱心網友回復:
您的(生成的)NAMESPACE檔案有兩個與包相關的條目:
useDynLib(CBEA, .registration = TRUE)
useDynLib(cbea, .registration = TRUE)
洗掉第二個(即洗掉任何你告訴roxygen2添加它的地方,你會沒事的。你看到的錯誤訊息和參考表明 Linux 上的案例問題,cbea.so不同于CBEA.so(而 macOS 和 Windows 讓你擺脫它) .
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/365925.html
上一篇:從C#上的SoapWSA回應中的二進制附件獲取檔案的最佳方法是什么?
下一篇:這個檔案描述符和群是如何作業的?
