Windows11下R4.1.0无法安装unigd 0.1.1包求助
问题:Windows 11下R v4.1.0无法安装unigd v0.1.1包
环境信息
- 系统:Windows 11(R显示运行在Windows 10 x64 build 22621)
- R版本:v4.1.0
- 已安装Rtools40并配置到PATH中
- 目标包:unigd v0.1.1(httpgd v2.0.1的依赖包,httpgd是VS Code查看R图形的推荐工具)
安装错误信息
执行命令 install.packages("unigd", dependencies = T) 时出现编译错误:
/mingw32/bin/g++ -shared -s -static-libgcc -o unigd.dll tmp.def base_64.o compress.o cpp11.o draw_data.o page_store.o plot_history.o r_thread_posix.o r_thread_win32.o renderer_cairo.o renderer_json.o renderer_meta.o renderer_strings.o renderer_svg.o renderer_tikz.o renderers.o unigd.o unigd_dev.o unigd_external.o uuid.o -L../windows/harfbuzz-2.7.4/lib/i386 -lpng -lz -L../windows/cairo-1.16.0/lib/i386 -lcairo -lfreetype -lpixman-1 -lharfbuzz -lbz2 -liconv -lgdi32 -ltiff -ltiffxx -ljpeg -lzstd -lwebp -lsharpyuv -llzma -LC:/<MY_INSTALL_DIR>/R/R-41~1.0/bin/i386 -lR C:/rtools40/mingw32/bin/../lib/gcc/i686-w64-mingw32/8.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lzstd C:/rtools40/mingw32/bin/../lib/gcc/i686-w64-mingw32/8.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lwebp C:/rtools40/mingw32/bin/../lib/gcc/i686-w64-mingw32/8.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lsharpyuv C:/rtools40/mingw32/bin/../lib/gcc/i686-w64-mingw32/8.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -llzma collect2.exe: error: ld returned 1 exit status no DLL was created ERROR: compilation failed for package 'unigd'
R会话信息
> sessionInfo() R version 4.1.0 (2021-05-18) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 10 x64 (build 22621) Matrix products: default locale: [1] LC_COLLATE=German_Switzerland.1252 LC_CTYPE=German_Switzerland.1252 LC_MONETARY=German_Switzerland.1252 LC_NUMERIC=C [5] LC_TIME=German_Switzerland.1252 attached base packages: [1] stats graphics grDevices datasets utils methods base loaded via a namespace (and not attached): [1] compiler_4.1.0 cli_3.6.1 tools_4.1.0 jsonlite_1.8.8 rlang_1.1.3 renv_1.0.3
解决方案
错误核心是链接器找不到zstd、webp、sharpyuv、lzma这些依赖库,Rtools40默认未包含这些库,可按以下步骤解决:
优先安装预编译二进制包
跳过本地编译,直接安装CRAN提供的二进制版本:install.packages("unigd", type = "binary")若CRAN无对应版本,下载unigd的二进制包手动安装:
install.packages("本地包路径/unigd_0.1.1.zip", repos = NULL, type = "binary")手动补充缺失依赖库(需本地编译时用)
- 打开Rtools40的MSYS2终端(选对应R架构的版本,你的R是x64就选64-bit)
- 执行命令安装缺失库:
(sharpyuv随libwebp一同安装)pacman -S mingw-w64-x86_64-zstd mingw-w64-x86_64-libwebp mingw-w64-x86_64-xz - 安装完成后重新执行
install.packages("unigd", dependencies = TRUE)
升级R版本(推荐)
R v4.1.0版本较旧,后续版本搭配的Rtools(如Rtools42/Rtools43)已包含这些缺失库。升级到R v4.2及以上版本,既能解决依赖问题,也能更好适配Windows 11。验证PATH配置
确保Rtools路径在系统PATH中优先级正确,在R中执行以下命令检查:Sys.which("g++")输出需指向Rtools40的mingw64/bin目录下的g++程序。
内容的提问来源于stack exchange,提问作者Daniel M Bader
相关产品推荐
相关产品推荐

