我一直在使用Potit的软件包管理器进行二进制安装程序包,这对大多数事情都有效。但是,从源需要

问题描述 投票:0回答:1

,例如,

> install.packages("jsonlite")
Installing package into ‘/Users/r2/Library/R/4.4’
(as ‘lib’ is unspecified)
trying URL 'https://packagemanager.posit.co/cran/latest/src/contrib/jsonlite_1.9.1.tar.gz'
Content type 'binary/octet-stream' length 1051291 bytes (1.0 MB)
==================================================
downloaded 1.0 MB

* installing *source* package ‘jsonlite’ ...
** package ‘jsonlite’ successfully unpacked and MD5 sums checked
** using staged installation
** libs
using C compiler: ‘Apple clang version 16.0.0 (clang-1600.0.26.6)’
using SDK: ‘’
clang -I"/opt/homebrew/Cellar/r/4.4.3_1/lib/R/include" -DNDEBUG -Iyajl/api  -I/opt/homebrew/opt/gettext/include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/xz/include -I/opt/homebrew/include     -fPIC  -g -O2  -c base64.c -o base64.o
clang -I"/opt/homebrew/Cellar/r/4.4.3_1/lib/R/include" -DNDEBUG -Iyajl/api  -I/opt/homebrew/opt/gettext/include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/xz/include -I/opt/homebrew/include     -fPIC  -g -O2  -c collapse_array.c -o collapse_array.o
...
clang -I"/opt/homebrew/Cellar/r/4.4.3_1/lib/R/include" -DNDEBUG -Iyajl/api  -I/opt/homebrew/opt/gettext/include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/xz/include -I/opt/homebrew/include     -fPIC  -g -O2  -c yajl/yajl_parser.c -o yajl/yajl_parser.o
clang -I"/opt/homebrew/Cellar/r/4.4.3_1/lib/R/include" -DNDEBUG -Iyajl/api  -I/opt/homebrew/opt/gettext/include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/xz/include -I/opt/homebrew/include     -fPIC  -g -O2  -c yajl/yajl_tree.c -o yajl/yajl_tree.o
ar rcs yajl/libstatyajl.a yajl/yajl.o yajl/yajl_alloc.o yajl/yajl_buf.o yajl/yajl_encode.o yajl/yajl_gen.o yajl/yajl_lex.o yajl/yajl_parser.o yajl/yajl_tree.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -L/opt/homebrew/Cellar/r/4.4.3_1/lib/R/lib -L/opt/homebrew/opt/gettext/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/xz/lib -L/opt/homebrew/lib -o jsonlite.so base64.o collapse_array.o collapse_object.o collapse_pretty.o escape_chars.o integer64_to_na.o is_datelist.o is_recordlist.o is_scalarlist.o modp_numtoa.o null_to_na.o num_to_char.o parse.o prettify.o push_parser.o r-base64.o register.o row_collapse.o transpose_list.o validate.o -Lyajl -lstatyajl -L/opt/homebrew/Cellar/r/4.4.3_1/lib/R/lib -lR -lintl -Wl,-framework -Wl,CoreFoundation
ld: archive member '/' not a mach-o file in '/private/var/folders/3f/0hlmq7rx34ddjqtlc1lqbxl80000gn/T/RtmpuoriDi/R.INSTALLae611eb747f2/jsonlite/src/yajl/libstatyajl.a'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [/opt/homebrew/Cellar/r/4.4.3_1/lib/R/share/make/shlib.mk:10: jsonlite.so] Error 1
ERROR: compilation failed for package ‘jsonlite’

that错误是通过Homebrew安装的R中的错误,但这也是“ R.App”的问题。几乎相同的输出,但是使用R的

/Library/Framework/...

路径包括标头等:

> install.packages("jsonlite", type='source') Installing package into ‘/Users/r2/Library/R/4.4’ (as ‘lib’ is unspecified) trying URL 'https://packagemanager.posit.co/cran/latest/src/contrib/jsonlite_1.9.1.tar.gz' Content type 'binary/octet-stream' length 1051291 bytes (1.0 MB) ================================================== downloaded 1.0 MB * installing *source* package ‘jsonlite’ ... ** package ‘jsonlite’ successfully unpacked and MD5 sums checked ** using staged installation ** libs using C compiler: ‘Apple clang version 16.0.0 (clang-1600.0.26.6)’ using SDK: ‘’ clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -Iyajl/api -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c base64.c -o base64.o clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -Iyajl/api -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c collapse_array.c -o collapse_array.o ... clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -Iyajl/api -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c yajl/yajl_parser.c -o yajl/yajl_parser.o clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -Iyajl/api -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c yajl/yajl_tree.c -o yajl/yajl_tree.o ar rcs yajl/libstatyajl.a yajl/yajl.o yajl/yajl_alloc.o yajl/yajl_buf.o yajl/yajl_encode.o yajl/yajl_gen.o yajl/yajl_lex.o yajl/yajl_parser.o yajl/yajl_tree.o clang -arch arm64 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -L/Library/Frameworks/R.framework/Resources/lib -L/opt/R/arm64/lib -o jsonlite.so base64.o collapse_array.o collapse_object.o collapse_pretty.o escape_chars.o integer64_to_na.o is_datelist.o is_recordlist.o is_scalarlist.o modp_numtoa.o null_to_na.o num_to_char.o parse.o prettify.o push_parser.o r-base64.o register.o row_collapse.o transpose_list.o validate.o -Lyajl -lstatyajl -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation ld: archive member '/' not a mach-o file in '/private/var/folders/3f/0hlmq7rx34ddjqtlc1lqbxl80000gn/T/RtmpVNvRR6/R.INSTALLb2f9120e3fb/jsonlite/src/yajl/libstatyajl.a' clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [/Library/Frameworks/R.framework/Resources/share/make/shlib.mk:10: jsonlite.so] Error 1 ERROR: compilation failed for package ‘jsonlite’

一些基本信息:
> R.version
               _                           
platform       aarch64-apple-darwin20      
arch           aarch64                     
os             darwin20                    
system         aarch64, darwin20           
status                                     
major          4                           
minor          4.2                         
year           2024                        
month          10                          
day            31                          
svn rev        87279                       
language       R                           
version.string R version 4.4.2 (2024-10-31)
nickname       Pile of Leaves              

Sys.which(c("gcc", "clang", "make"))
#                                          gcc 
#                               "/usr/bin/gcc" 
#                                        clang 
#                             "/usr/bin/clang" 
#                                         make 
# "/opt/homebrew/opt/make/libexec/gnubin/make"

非常相关的信息:

这是红杉15.3.2,我安装了Xcode 16.2(16c5032a)。

这与
jsonlite
本身无关,而是任何需要编译的软件包。 (Poitit的PM的二进制包装均正常工作。)

这也发生在
R --no-site --vanilla
中,因此这不是

.Rprofile

或其他站点文件的问题。
    这种情况发生在其他软件包存储库中,例如来自
  • https://cloud.r-project.org/src/contrib/jsonlite_1.9.1.tar.gz
  • ,同样的错误。
  • 	
  • 我认为你是对的,这条线是有益的。 我看到
  • using SDK: ‘’
    .
    diD您按照
    using SDK: ‘MacOSX15.1.sdk’
    上的说明安装工具? 我看到的另一个区别是,您有
  • https://mac.r-project.org/tools/
  • make
    ,而我的却是
  • homebrew
。 也许您在路径上的早期目录比
r xcode macos clang
1个回答
0
投票
? 我在路径上有

/usr/bin

,但它是在
/opt/homebrew/bin
/opt/R/arm64/bin

,苹果添加的一些垃圾之后,

/usr/local/bin


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.