MacOS下使用Rust Cargo时NSInvalidArgumentException异常的解决方法
问题
通过Rust官网提供的官方curl命令:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
在MacOS系统上安装了Rust,rustc --version显示安装正常,但执行cargo --version或cargo new backend等Cargo命令时,抛出NSInvalidArgumentException异常,重启系统无效。异常信息如下:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString stringByStandardizingPath]: unrecognized selector sent to instance 0x60000133c0c0' *** First throw call stack: ( 0 CoreFoundation 0x000000018d2ec570 __exceptionPreprocess + 176 1 libobjc.A.dylib 0x000000018cdddeb4 objc_exception_throw + 60 2 CoreFoundation 0x000000018d39e12c -[NSObject(NSObject) __retain_OA] + 0 3 CoreFoundation 0x000000018d2567d4 ___forwarding___ + 1572 4 CoreFoundation 0x000000018d2560f0 _CF_forwarding_prep_0 + 96 5 Foundation 0x000000018e32c860 -[NSProcessInfo arguments] + 188 6 CoreFoundation 0x000000018d367d48 __getDefaultArguments_block_invoke + 96 7 libdispatch.dylib 0x000000018cfe8910 _dispatch_client_callout + 20 8 libdispatch.dylib 0x000000018cfea14c _dispatch_once_callout + 32 9 CoreFoundation 0x000000018d3676e4 _addBackstopValuesForIdentifierAndSource + 640 10 CoreFoundation 0x000000018d221ffc __81-[_CFXPreferences(SourceAdditions) withNamedVolatileSourceForIdentifier:perform:]_block_invoke + 144 11 CoreFoundation 0x000000018d36738c -[_CFXPreferences withNamedVolatileSourceForIdentifier:perform:] + 272 12 CoreFoundation 0x000000018d22836c -[CFPrefsSearchListSource addNamedVolatileSourceForIdentifier:] + 136 13 CoreFoundation 0x000000018d3a660c __108-[_CFXPreferences(SearchListAdditions) withSearchListForIdentifier:container:cloudConfigurationURL:perform:]_block_invoke.155 + 296 14 CoreFoundation 0x000000018d3a62b4 -[_CFXPreferences withSearchLists:] + 84 15 CoreFoundation 0x000000018d2238c0 __108-[_CFXPreferences(SearchListAdditions) withSearchListForIdentifier:container:cloudConfigurationURL:perform:]_block_invoke + 300 16 CoreFoundation 0x000000018d3a6460 -[_CFXPreferences withSearchListForIdentifier:container:cloudConfigurationURL:perform:] + 384 17 CoreFoundation 0x000000018d2231e8 -[_CFXPreferences copyAppValueForKey:identifier:container:configurationURL:] + 156 18 CoreFoundation 0x000000018d223110 _CFPreferencesCopyAppValueWithContainerAndConfiguration + 112 19 SystemConfiguration 0x000000018dfb5478 SCDynamicStoreCopyProxiesWithOptions + 180 20 libcurl.4.dylib 0x00000001042a6d48 Curl_macos_init + 16 21 libcurl.4.dylib 0x000000010428be5c global_init + 172 22 libcurl.4.dylib 0x000000010428bda0 curl_global_init + 68 23 cargo 0x0000000103266878 _ZN3std4sync4once4Once9call_once28_$u7b$$u7b$closure$u7d$$u7d$17h9969c74c6cd47fe4E + 36 24 cargo 0x000000010337423c _ZN3std10sys_common4once5queue4Once4call17hcf0ec3e1860a2be3E + 724 25 cargo 0x0000000103266a5c _ZN4curl9INIT_CTOR9init_ctor17hcaba8dae76a2e3deE + 96 26 dyld 0x000000018ce35a24 ___ZZNK5dyld46Loader25findAndRunAllInitializersERNS_12RuntimeStateEENK3$_0clEv_block_invoke + 168 27 dyld 0x000000018ce7b328 ___ZNK5dyld313MachOAnalyzer18forEachInitializerER11DiagnosticsRKNS0_15VMAddrConverterEU13block_pointerFvjEPKv_block_invoke.209 + 340 28 dyld 0x000000018ce6e668 ___ZNK5dyld39MachOFile14forEachSectionEU13block_pointerFvRKNS0_11SectionInfoEbRbE_block_invoke + 496 29 dyld 0x000000018ce152fc _ZNK5dyld39MachOFile18forEachLoadCommandER11DiagnosticsU13block_pointerFvPK12load_commandRbE + 300 30 dyld 0x000000018ce6d6a0 _ZNK5dyld39MachOFile14forEachSectionEU13block_pointerFvRKNS0_11SectionInfoEbRbE + 192 31 dyld 0x000000018ce7ae3c _ZNK5dyld313MachOAnalyzer18forEachInitializerER11DiagnosticsRKNS0_15VMAddrConverterEU13block_pointerFvjEPKv + 516 32 dyld 0x000000018ce31b38 _ZNK5dyld46Loader25findAndRunAllInitializersERNS_12RuntimeStateE + 524 33 dyld 0x000000018ce37f70 _ZNK5dyld416JustInTimeLoader15runInitializersERNS_12RuntimeStateE + 36 34 dyld 0x000000018ce31f24 _ZNK5dyld46Loader23runInitializersBottomUpERNS_12RuntimeStateERN5dyld35ArrayIPKS0_EE + 220 35 dyld 0x000000018ce35ab0 _ZZNK5dyld46Loader38runInitializersBottomUpPlusUpwardLinksERNS_12RuntimeStateEENK3$_1clEv + 112 36 dyld 0x000000018ce320f0 _ZNK5dyld46Loader38runInitializersBottomUpPlusUpwardLinksERNS_12RuntimeStateE + 380 37 dyld 0x000000018ce574dc _ZN5dyld44APIs25runAllInitializersForMainEv + 464 38 dyld 0x000000018ce19fa0 _ZN5dyld4L7prepareERNS_4APIsEPKN5dyld313MachOAnalyzerE + 3192 39 dyld 0x000000018ce18edc start + 1844 ) libc++abi: terminating due to uncaught exception of type NSException [1] 85046 abort cargo --version
解决方案
1. 重置系统代理设置
- 打开「系统设置」→「网络」→ 选中当前网络(如Wi-Fi)→ 点击「详细信息」→「代理」
- 取消所有代理选项的勾选,点击「应用」保存
- 重启终端后测试Cargo命令
2. 清除代理环境变量
终端执行以下命令临时清除可能干扰curl的环境变量:
unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy ALL_PROXY all_proxy
之后执行cargo --version验证是否恢复正常
3. 重新安装Rust并指定系统libcurl
先卸载现有Rust:
rustup self uninstall
重新安装时强制使用系统自带的libcurl:
export CARGO_HTTP_CURL_PATH=/usr/bin/curl curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
4. 修复libcurl库链接冲突
执行命令查看cargo依赖的libcurl路径:
otool -L ~/.cargo/bin/cargo | grep curl
如果输出的不是系统默认的/usr/lib/libcurl.4.dylib,执行以下命令重新链接:
install_name_tool -change /path/to/incorrect/libcurl.4.dylib /usr/lib/libcurl.4.dylib ~/.cargo/bin/cargo
替换命令中的/path/to/incorrect/libcurl.4.dylib为otool输出的错误路径
内容的提问来源于stack exchange,提问作者ChaoticQubit
相关产品推荐
相关产品推荐

