从根源分析,调试,定位和解决MacOS ld: unsupported tapi file type ‘!tapi-tbd‘ in YAML file
你要是遇到同样错误,找一圈都没有解决,建议认真读一下本文,这个应该是最终极的解决办法,从原理上剖析了产生的原因,同时给出来了调试和定位的办法。
maccos使用brew安装了一个gcc14, 结果编译一个最简单的程序都报错,如下:
gcc-14 test.c -o t
ld: unsupported tapi file type '!tapi-tbd' in YAML file '/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/lib/libSystem.tbd' for architecture x86_64
collect2: error: ld returned 1 exit status
查了网上是说libSystem.tbd和ld不一致引起的。现在不知道ld是调用了哪份,当前系统一堆不同版本的。
一般的解决办法如下:
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install
但是我试了并没有用,同时使用clang编译是正常的,说明这个CommandLineTools没有问题的。
没有办法了,只好自己来分析一下了。
首先使用 dtruss跟踪一下系统api调用,发现ld应该是posix_spawn调用了。如下:
sudo dtruss gcc-14 test.c -o t
Password:
SYSCALL(args) = returnopen("/dev/dtracehelper\0", 0x2, 0x0) = 3 0
ioctl(0x3, 0x80086804, 0x7FFEEF6B3560) = 0 0
close(0x3) = 0 0
mprotect(0x1006EF000, 0x48000, 0x1) = 0 0
access("/AppleInternal/XBS/.isChrooted\0", 0x0, 0x0) = -1 Err#2
bsdthread_register(0x7FFF2034746C, 0x7FFF20347458, 0x2000) = 1073742047 0
shm_open(0x7FFF2021DF66, 0x0, 0x2021CC3A) = 3 0
fstat64(0x3, 0x7FFEEF6B23D0, 0x0) = 0 0
mmap(0x0, 0x1000, 0x1, 0x40001, 0x3, 0x0) = 0x1007DD000 0
close(0x3) = 0 0
ioctl(0x2, 0x4004667A, 0x7FFEEF6B2494) = 0 0
mprotect(0x1007E3000, 0x1000, 0x0) = 0 0
mprotect(0x1007F2000, 0x1000, 0x0) = 0 0
mprotect(0x1007F3000, 0x1000, 0x0) = 0 0
mprotect(0x100802000, 0x1000, 0x0) = 0 0
mprotect(0x100803000, 0x1000, 0x0) = 0 0
mprotect(0x100812000, 0x1000, 0x0) = 0 0
mprotect(0x1007DE000, 0x90, 0x1) = 0 0
mprotect(0x100813000, 0x1000, 0x1) = 0 0
mprotect(0x1007DE000, 0x90, 0x3) = 0 0
mprotect(0x1007DE000, 0x90, 0x1) = 0 0
issetugid(0x0, 0x0, 0x0) = 0 0
getpid(0x0, 0x0, 0x0) = 86951 0
stat64("/AppleInternal\0", 0x7FFEEF6B29C0, 0x0) = -1 Err#2
csops_audittoken(0x153A7, 0x7, 0x7FFEEF6B24F0) = -1 Err#22
proc_info(0x2, 0x153A7, 0xD) = 64 0
csops_audittoken(0x153A7, 0x7, 0x7FFEEF6B25E0) = -1 Err#22
sysctlbyname(kern.system_version_compat, 0x1A, 0x0, 0x0, 0x7FFEEF6B2A7C) = 0 0
ioctl(0x2, 0x4004667A, 0x7FFEEF6B4594) = 0 0
ioctl(0x2, 0x4004667A, 0x7FFEEF6B45A4) = 0 0
ioctl(0x2, 0x4004667A, 0x7FFEEF6B4594) = 0 0
sysctl([CTL_KERN, 2, 0, 0, 0, 0] (2), 0x7FFEEF6B45D0, 0x7FFEEF6B45C0, 0x0, 0x0) = 0 0
sigaction(0x2, 0x7FFEEF6B45D8, 0x7FFEEF6B4600) = 0 0
sigaction(0x2, 0x7FFEEF6B45D8, 0x7FFEEF6B4600) = 0 0
sigaction(0x1, 0x7FFEEF6B45D8, 0x7FFEEF6B4600) = 0 0
sigaction(0x1, 0x7FFEEF6B45D8, 0x7FFEEF6B4600) = 0 0
sigaction(0xF, 0x7FFEEF6B45D8, 0x7FFEEF6B4600) = 0 0
sigaction(0xF, 0x7FFEEF6B45D8, 0x7FFEEF6B4600) = 0 0
sigaction(0xD, 0x7FFEEF6B45D8, 0x7FFEEF6B4600) = 0 0
sigaction(0xD, 0x7FFEEF6B45D8, 0x7FFEEF6B4600) = 0 0
sigaction(0x14, 0x7FFEEF6B45D8, 0x7FFEEF6B4600) = 0 0
getrlimit(0x1003, 0x7FFEEF6B4600, 0x0) = 0 0
setrlimit(0x1003, 0x7FFEEF6B4600, 0x0) = 0 0
access("/Volumes/10136/flutter/bin/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/usr/local/cuda/lib/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/usr/local/cuda/extras/CUPTI/lib/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/usr/local/anaconda3/bin/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/usr/local/anaconda3/condabin/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/Volumes/data/Codes/android-ndk-r10e/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/Applications/Cocos/frameworks/cocos2d-x-3.5/tools/cocos2d-console/bin/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/usr/local/bin/gcc-14\0", 0x1, 0x0) = 0 0
stat64("/usr/local/bin/gcc-14\0", 0x7FFEEF6B4440, 0x0) = 0 0
stat64("/\0", 0x7FFEEF6B1D68, 0x0) = 0 0
getattrlist("/usr\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local/bin\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local/bin/gcc-14\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
readlink("/usr/local/bin/gcc-14\0", 0x7FFEEF6B2AB0, 0x400) = 33 0
getattrlist("/usr/local/Cellar\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local/Cellar/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/bin\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/bin/gcc-14\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
access("/Volumes/10136/flutter/bin/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/usr/local/cuda/lib/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/usr/local/cuda/extras/CUPTI/lib/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/usr/local/anaconda3/bin/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/usr/local/anaconda3/condabin/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/Volumes/data/Codes/android-ndk-r10e/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/Applications/Cocos/frameworks/cocos2d-x-3.5/tools/cocos2d-console/bin/gcc-14\0", 0x1, 0x0) = -1 Err#2
access("/usr/local/bin/gcc-14\0", 0x1, 0x0) = 0 0
stat64("/usr/local/bin/gcc-14\0", 0x7FFEEF6B4440, 0x0) = 0 0
getattrlist("/usr\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local/bin\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local/bin/gcc-14\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
readlink("/usr/local/bin/gcc-14\0", 0x7FFEEF6B2AB0, 0x400) = 33 0
getattrlist("/usr/local/Cellar\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local/Cellar/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/bin\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/bin/gcc-14\0", 0x7FFF202A1644, 0x7FFEEF6B36B0) = 0 0
access("/usr/local/Cellar/gcc/14.2.0_1/bin/\0", 0x1, 0x0) = 0 0
access("/usr/local/Cellar/gcc/14.2.0_1/bin/\0", 0x1, 0x0) = 0 0
open_nocancel(".\0", 0x0, 0x0) = 3 0
fstat64(0x3, 0x7FFEEF6B1D20, 0x0) = 0 0
fcntl_nocancel(0x3, 0x32, 0x7FFEEF6B40E0) = 0 0
close_nocancel(0x3) = 0 0
stat64("/Volumes/evo2T/src/paq8px/mybuild\0", 0x7FFEEF6B1C90, 0x0) = 0 0
stat64("/Volumes/evo2T/src/paq8px/mybuild\0", 0x7FFEEF6B2338, 0x0) = 0 0
getattrlist("/Volumes/evo2T/src/paq8px/mybuild/test.c\0", 0x7FFF202A1644, 0x7FFEEF6B3C80) = 0 0
open_nocancel(".\0", 0x0, 0x0) = 3 0
fstat64(0x3, 0x7FFEEF6B1D20, 0x0) = 0 0
fcntl_nocancel(0x3, 0x32, 0x7FFEEF6B40E0) = 0 0
close_nocancel(0x3) = 0 0
stat64("/Volumes/evo2T/src/paq8px/mybuild\0", 0x7FFEEF6B1C90, 0x0) = 0 0
stat64("/Volumes/evo2T/src/paq8px/mybuild\0", 0x7FFEEF6B2338, 0x0) = 0 0
getattrlist("/Volumes/evo2T/src/paq8px/mybuild/t\0", 0x7FFF202A1644, 0x7FFEEF6B3C80) = 0 0
access("/usr/local/Cellar/gcc/14.2.0_1/bin/\0", 0x1, 0x0) = 0 0
access("/usr/local/Cellar/gcc/14.2.0_1/bin/\0", 0x1, 0x0) = 0 0
access("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/specs\0", 0x4, 0x0) = -1 Err#2
access("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/specs\0", 0x4, 0x0) = -1 Err#2
access("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../../../../x86_64-apple-darwin20/lib/x86_64-apple-darwin20/14/specs\0", 0x4, 0x0) = -1 Err#2
access("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../../../../x86_64-apple-darwin20/lib/specs\0", 0x4, 0x0) = -1 Err#2
access("/usr/local/opt/gcc/lib/gcc/current/gcc/x86_64-apple-darwin20/specs\0", 0x4, 0x0) = -1 Err#2
access("/usr/local/Cellar/gcc/14.2.0_1/bin/\0", 0x1, 0x0) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/lto-wrapper\0", 0x7FFEEF6B4450, 0x0) = 0 0
access("/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/lto-wrapper\0", 0x1, 0x0) = 0 0
access("/var/tmp/\0", 0x7, 0x0) = 0 0
stat64("/var/tmp/\0", 0x7FFEEF6B3630, 0x0) = 0 0
getentropy(0x7FFEEF6B3070, 0x20, 0x0) = 0 0
getentropy(0x7FFEEF6B30C0, 0x40, 0x0) = 0 0
fstatat64(0xFFFFFFFFFFFFFFFE, 0x7FA4C6C04200, 0x7FFEEF6B31B0) = 0 0
openat_nocancel(0xFFFFFFFFFFFFFFFE, 0x7FA4C6C04200, 0xA02) = 3 0
close(0x3) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/cc1\0", 0x7FFEEF6B34B0, 0x0) = 0 0
access("/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/cc1\0", 0x1, 0x0) = 0 0
posix_spawn(0x7FFEEF6B355C, 0x7FA4C6C05D20, 0x7FFEEF6B3480) = 0 0
wait4(0x153A9, 0x7FA4C6C05850, 0x0) = 86953 0
fstatat64(0xFFFFFFFFFFFFFFFE, 0x7FA4C6D04080, 0x7FFEEF6B2E90) = 0 0
openat_nocancel(0xFFFFFFFFFFFFFFFE, 0x7FA4C6D04080, 0xA02) = 3 0
close(0x3) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/as\0", 0x7FFEEF6B42C0, 0x0) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/as\0", 0x7FFEEF6B42C0, 0x0) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../../../../x86_64-apple-darwin20/bin/x86_64-apple-darwin20/14/as\0", 0x7FFEEF6B42C0, 0x0) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../../../../x86_64-apple-darwin20/bin/as\0", 0x7FFEEF6B42C0, 0x0) = -1 Err#2
posix_spawn(0x7FFEEF6B436C, 0x7FFEEF6B3F10, 0x7FFEEF6B38B0) = -1 Err#2
posix_spawn(0x7FFEEF6B436C, 0x7FFEEF6B3F10, 0x7FFEEF6B38B0) = -1 Err#2
posix_spawn(0x7FFEEF6B436C, 0x7FFEEF6B3F10, 0x7FFEEF6B38B0) = -1 Err#2
posix_spawn(0x7FFEEF6B436C, 0x7FFEEF6B3F10, 0x7FFEEF6B38B0) = 0 0
stat64("/usr/local/anaconda3/bin/as\0", 0x7FFEEF6B3E40, 0x0) = 0 0
wait4(0x153AD, 0x7FA4C6E04090, 0x0) = 86957 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/collect2\0", 0x7FFEEF6B4450, 0x0) = 0 0
access("/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/collect2\0", 0x1, 0x0) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/.\0", 0x7FFEEF6B4430, 0x0) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/.\0", 0x7FFEEF6B4430, 0x0) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../../../../x86_64-apple-darwin20/bin/x86_64-apple-darwin20/14/.\0", 0x7FFEEF6B4430, 0x0) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../../../../x86_64-apple-darwin20/bin/.\0", 0x7FFEEF6B4430, 0x0) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/.\0", 0x7FFEEF6B4430, 0x0) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/.\0", 0x7FFEEF6B4430, 0x0) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../../../../x86_64-apple-darwin20/lib/x86_64-apple-darwin20/14/.\0", 0x7FFEEF6B4430, 0x0) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../../../../x86_64-apple-darwin20/lib/.\0", 0x7FFEEF6B4430, 0x0) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../x86_64-apple-darwin20/14/.\0", 0x7FFEEF6B4430, 0x0) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../.\0", 0x7FFEEF6B4430, 0x0) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/.\0", 0x7FFEEF6B3470, 0x0) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/.\0", 0x7FFEEF6B3470, 0x0) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../../../../x86_64-apple-darwin20/lib/x86_64-apple-darwin20/14/.\0", 0x7FFEEF6B3470, 0x0) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../../../../x86_64-apple-darwin20/lib/.\0", 0x7FFEEF6B3470, 0x0) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../x86_64-apple-darwin20/14/.\0", 0x7FFEEF6B3470, 0x0) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../.\0", 0x7FFEEF6B3470, 0x0) = 0 0
getattrlist("/usr\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/bin\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc/x86_64-apple-darwin20\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc/x86_64-apple-darwin20/14\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc/x86_64-apple-darwin20/14/.\0", 0x7FFEEF6B2CB0, 0x0) = 0 0
getattrlist("/usr\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/bin\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc/.\0", 0x7FFEEF6B2CB0, 0x0) = 0 0
getattrlist("/usr\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/bin\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc/x86_64-apple-darwin20\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc/x86_64-apple-darwin20/14\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/x86_64-apple-darwin20\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../../../../x86_64-apple-darwin20/lib/x86_64-apple-darwin20/14/.\0", 0x7FFEEF6B2CB0, 0x0) = -1 Err#2
getattrlist("/usr\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/bin\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc/x86_64-apple-darwin20\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc/x86_64-apple-darwin20/14\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/x86_64-apple-darwin20\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../../../../x86_64-apple-darwin20/lib/.\0", 0x7FFEEF6B2CB0, 0x0) = -1 Err#2
getattrlist("/usr\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/bin\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc/x86_64-apple-darwin20\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc/x86_64-apple-darwin20/14\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/x86_64-apple-darwin20\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = -1 Err#2
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/x86_64-apple-darwin20/14/../../../x86_64-apple-darwin20/14/.\0", 0x7FFEEF6B2CB0, 0x0) = -1 Err#2
getattrlist("/usr\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/bin\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc/x86_64-apple-darwin20\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
getattrlist("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/gcc/x86_64-apple-darwin20/14\0", 0x7FFF202A1644, 0x7FFEEF6B2500) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/lib/gcc/current/.\0", 0x7FFEEF6B2CB0, 0x0) = 0 0
stat64("/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/collect2\0", 0x7FFEEF6B43A0, 0x0) = 0 0
access("/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/collect2\0", 0x1, 0x0) = 0 0
posix_spawn(0x7FFEEF6B444C, 0x7FA4C6D049B0, 0x7FFEEF6B4370) = 0 0
ld: unsupported tapi file type '!tapi-tbd' in YAML file '/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/lib/libSystem.tbd' for architecture x86_64
collect2: error: ld returned 1 exit status
wait4(0x153B4, 0x7FA4C6D05AF0, 0x0) = 86964 0
stat64("/var/tmp//ccJ8HKNk.o\0", 0x7FFEEF6B45A0, 0x0) = 0 0
unlink("/var/tmp//ccJ8HKNk.o\0", 0x0, 0x0) = 0 0
stat64("/var/tmp//ccDAFOTi.s\0", 0x7FFEEF6B45A0, 0x0) = 0 0
unlink("/var/tmp//ccDAFOTi.s\0", 0x0, 0x0) = 0 0
系统apiposix_spawn的参数没有打印出来,不知道为什么, lldb跟一下。
sudo lldb gcc-14
Password:^
SyntaxError: invalid syntax
(lldb) target create "gcc-14"
Current executable set to 'gcc-14' (x86_64).
(lldb) b posix_spawn
Breakpoint 1: where = libsystem_kernel.dylib`posix_spawn, address = 0x00007fff202de1e9
(lldb) r test.c -o t
Process 87222 launched: '/usr/local/bin/gcc-14' (x86_64)
Process 87222 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1frame #0: 0x00007fff2031c1e9 libsystem_kernel.dylib`posix_spawn
libsystem_kernel.dylib`posix_spawn:
-> 0x7fff2031c1e9 <+0>: pushq %rbp0x7fff2031c1ea <+1>: movq %rsp, %rbp0x7fff2031c1ed <+4>: pushq %r150x7fff2031c1ef <+6>: pushq %r14
Target 0: (gcc-14) stopped.
(lldb) p (char*)$rsi
(char *) $0 = 0x00000001005063c0 "/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/cc1"
(lldb) command add 1
invalid command 'command add'.
(lldb) breakpoint command add 1
Enter your debugger command(s). Type 'DONE' to end.
> p (char*)$rsi
(lldb) c
Process 87222 resuming
(lldb) p (char*)$rsi
(char *) $1 = 0x00007ffeefbfeea0 "/Volumes/10136/flutter/bin/as"Process 87222 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1frame #0: 0x00007fff2031c1e9 libsystem_kernel.dylib`posix_spawn
libsystem_kernel.dylib`posix_spawn:
-> 0x7fff2031c1e9 <+0>: pushq %rbp0x7fff2031c1ea <+1>: movq %rsp, %rbp0x7fff2031c1ed <+4>: pushq %r150x7fff2031c1ef <+6>: pushq %r14
Target 0: (gcc-14) stopped.
(lldb) c
Process 87222 resuming
(lldb) p (char*)$rsi
(char *) $2 = 0x00007ffeefbfeea0 "/usr/local/cuda/lib/as"Process 87222 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1frame #0: 0x00007fff2031c1e9 libsystem_kernel.dylib`posix_spawn
libsystem_kernel.dylib`posix_spawn:
-> 0x7fff2031c1e9 <+0>: pushq %rbp0x7fff2031c1ea <+1>: movq %rsp, %rbp0x7fff2031c1ed <+4>: pushq %r150x7fff2031c1ef <+6>: pushq %r14
Target 0: (gcc-14) stopped.
(lldb) c
Process 87222 resuming
(lldb) p (char*)$rsi
(char *) $3 = 0x00007ffeefbfeea0 "/usr/local/cuda/extras/CUPTI/lib/as"Process 87222 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1frame #0: 0x00007fff2031c1e9 libsystem_kernel.dylib`posix_spawn
libsystem_kernel.dylib`posix_spawn:
-> 0x7fff2031c1e9 <+0>: pushq %rbp0x7fff2031c1ea <+1>: movq %rsp, %rbp0x7fff2031c1ed <+4>: pushq %r150x7fff2031c1ef <+6>: pushq %r14
Target 0: (gcc-14) stopped.
(lldb) c
Process 87222 resuming
(lldb) p (char*)$rsi
(char *) $4 = 0x00007ffeefbfeea0 "/usr/local/anaconda3/bin/as"Process 87222 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1frame #0: 0x00007fff2031c1e9 libsystem_kernel.dylib`posix_spawn
libsystem_kernel.dylib`posix_spawn:
-> 0x7fff2031c1e9 <+0>: pushq %rbp0x7fff2031c1ea <+1>: movq %rsp, %rbp0x7fff2031c1ed <+4>: pushq %r150x7fff2031c1ef <+6>: pushq %r14
Target 0: (gcc-14) stopped.
(lldb) c
Process 87222 resuming
(lldb) p (char*)$rsi
(char *) $5 = 0x0000000100704b90 "/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/collect2"Process 87222 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1frame #0: 0x00007fff2031c1e9 libsystem_kernel.dylib`posix_spawn
libsystem_kernel.dylib`posix_spawn:
-> 0x7fff2031c1e9 <+0>: pushq %rbp0x7fff2031c1ea <+1>: movq %rsp, %rbp0x7fff2031c1ed <+4>: pushq %r150x7fff2031c1ef <+6>: pushq %r14
Target 0: (gcc-14) stopped.
(lldb) c
Process 87222 resuming
ld: unsupported tapi file type '!tapi-tbd' in YAML file '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libSystem.tbd' for architecture x86_64
collect2: error: ld returned 1 exit status
Process 87222 exited with status = 1 (0x00000001)
发现是最后一个apiposix_spawn是调用/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/collect2
运行一下 它加一个-debug参数
/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/collect2 -debug
//...去掉一堆
Looking for 'gcc'
collect2 version 14.2.0
ld_file_name = /usr/local/anaconda3/bin/ld
c_file_name = /usr/bin/gcc
nm_file_name = /usr/local/anaconda3/bin/nm
strip_file_name = /usr/local/anaconda3/bin/strip
c_file = a.out.cdtor.c
o_file = a.out.cdtor.o
看起来是使用了 /usr/local/anaconda3/bin/ld 我晕。
这个一堆都使用了这个目录下的,先临时屏蔽一下,
mv /usr/local/anaconda3/bin /usr/local/anaconda3/bin.bak
再执行
/usr/local/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/x86_64-apple-darwin20/14/collect2 -debug
//...
Looking for 'gcc'
collect2 version 14.2.0
ld_file_name = /usr/bin/ld
c_file_name = /usr/bin/gcc
nm_file_name = /usr/bin/nm
strip_file_name = /usr/bin/strip
c_file = a.out.cdtor.c
o_file = a.out.cdtor.o/usr/bin/ld
ld: warning: platform not specified
ld: warning: -arch not specified
ld: warning: No platform min-version specified on command line
ld: no object files specified
collect2: error: ld returned 1 exit status
看起来好了,再试试编译
$ gcc-14 test.c -o t && ./t
Hello Cruel World!
完美解决!!
这个anaconda的ld和系统的是不匹配的,但是它为了penv把这个替换了,结果collect2使用了它设置的工具链的ld. 然后引起这个问题。
这个python连gcc也搞乱了,真是服,自己乱就好了。为什么祸害别人?
本文希望可以帮到需要的人,要是遇到这个的,可能原因不大一样,但是这个文章把debug和定位的方法和原理都告诉大家了,祝大好运!
相关文章:
从根源分析,调试,定位和解决MacOS ld: unsupported tapi file type ‘!tapi-tbd‘ in YAML file
你要是遇到同样错误,找一圈都没有解决,建议认真读一下本文,这个应该是最终极的解决办法,从原理上剖析了产生的原因,同时给出来了调试和定位的办法。 maccos使用brew安装了一个gcc14, 结果编译一个最简单的程序都报错&a…...
【Uniapp-Vue3】previewImage图片预览
如果我们想要实现点击一张图片放大,并能够左右滑动,就要使用previewImage这个API。 uni.previewImage({ current:xxx, // 当前图片下标 urls:xxx, // 图片路径组 // 其他参数 }) 我们先编写一个点击图片的事件,并传递当前点击图片的下标&…...
doris:Insert Into Values
INSERT INTO VALUES 语句支持将 SQL 中的值导入到 Doris 的表中。INSERT INTO VALUES 是一个同步导入方式,执行导入后返回导入结果。可以通过请求的返回判断导入是否成功。INSERT INTO VALUES 可以保证导入任务的原子性,要么全部导入成功,要么…...
15 分布式锁和分布式session
在java中一个进程里面使用synchronized在new出来对象头信息中加锁,如果是静态方法中在加载的类信息中加锁(我们在锁的原理中讲过)。如果使用lock加锁可以自己指定。这些都是在同一个进程空间中的操作。如果在分布式环境中由于程序不在一个进程空间,就没办…...
迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-添加内核编译
编译内核时将该 HDF 驱动编译到镜像中,接下来编写驱动编译脚本 Makefile,代码如下所示: 加入编译体系,填加模块目录到 drivers/hdf_core/adapter/khdf/linux/Makefile 文件 更多内容可以关注:迅为RK3568开发板篇OpenHa…...
C语言练习(23)
求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数,用另一函数根据求出的最大公约数求最小公倍数。 ①不用全局变量,分别用两个函数求最大公约数和最小公倍数。两个整数在主函数中输入,并传送给函数f1,求出…...
LabVIEW 太阳能光伏发电系统智能监控
本文介绍了基于 LabVIEW 的太阳能光伏发电监控系统的设计与实现,着重探讨了其硬件配置、软件架构以及系统的实现方法。该系统能够有效提高太阳能光伏发电的监控效率和精确性,实现了远程监控和数据管理的智能化。 项目背景 在当前能源紧张与环境污染…...
大唐杯赛道一国一备赛思路
前情:本人非通信专业,打这个比赛纯粹为了保研加分,因为本人同届同学院的人参加了一次,获得了省级,加上有保研学长说这个比赛挺简单的,一直想参加的,机缘巧合下和另一个需要保研的同学组队&#…...
用户中心项目教程(五)---MyBatis-Plus完成后端初始化+测试方法
文章目录 1.数据库的链接和创建2.建库建表语句3.引入依赖4.yml配置文件5.添加相对路径6.实体类的书写7.Mapper接口的定义8.启动类的指定9.单元测试10运行时的bug 1.数据库的链接和创建 下面的这个就是使用的我们的IDEA链接这个里面的数据库: 接下来就是输入这个用户…...
深圳市云盟智慧科技有限公司智慧停车管理系统 SQL注入漏洞复现(附脚本)
免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...
PySide(PyQT)进行SQLite数据库编辑和前端展示的基本操作
以SQLite数据库为例,学习数据库的基本操作,使用QSql模块查询、编辑数据并在前端展示。 SQLite数据库的基础知识: https://blog.csdn.net/xulibo5828/category_12785993.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId1278…...
利用 SAM2 模型探测卫星图像中的农田边界
将 Segment Anything Model Version 2 应用于卫星图像以检测和导出农业地区田地边界的分步教程 🌟 简介 手动绘制田地边界是最耗时的任务之一,其准确性取决于绘制者的表现。然而,精确的边界检测在很多领域都有应用。例如,假设您…...
前端路由的hash模式和history模式
hash 模式和 history 模式是前端路由实现的两种常见方式,分别基于不同的浏览器特性实现。下面从浏览器实现、前端框架实现及相关标准定义三个方面详细解释这两种模式。 1. 浏览器实现 1.1 Hash 模式 • 核心机制: • 基于浏览器的 location.hash 属性…...
日志收集Day005
1.filebeat的input类型之filestream实战案例: 在7.16版本中已经弃用log类型,之后需要使用filebeat,与log不同,filebeat的message无需设置就是顶级字段 1.1简单使用: filebeat.inputs: - type: filestreamenabled: truepaths:- /tmp/myfilestream01.lo…...
代码随想录 二叉树 test 2
二叉树的非递归遍历 先序 方法一: 先保存根节点,用来之后找到右子树(利用栈来回溯到根,进而找到右子树) class Solution { public:vector<int> preorderTraversal(TreeNode* root) {vector<int> res; //存遍历序列stack<TreeNode*…...
浏览器默认语言与页面访问统计问题二三则
文章目录 前言网站默认语言问题网站访问统计问题Error: Empty components are self-closingError: A space is required before closing bracket 总结 前言 看标题大概能猜到这是一篇杂合体的总结,是这两天处理网站遇到的小问题,怕过段时间再忘了所以总…...
用Python绘制一只懒羊羊
目录 一、准备工作 二、Turtle库简介 三、绘制懒羊羊的步骤 1. 导入Turtle库并设置画布 2. 绘制头部 3. 绘制眼睛 4. 绘制嘴巴 5. 绘制身体 6. 绘制四肢 7. 完成绘制 五、运行代码与结果展示 六、总结 在这个趣味盎然的技术实践中,我们将使用Python和Turtle图形…...
虹科分享 | 汽车NVH小课堂之听音辨故障
随着车主开始关注汽车抖动异响问题,如何根据故障现象快速诊断异响来源,成了汽修人的必修课。 一个比较常用的方法就是靠“听”——“听音辨故障”。那今天,虹科Pico也整理了几个不同类型的异响声音,一起来听听看你能答对几个吧 汽…...
论文速读|SigLIP:Sigmoid Loss for Language Image Pre-Training.ICCV23
论文地址:https://arxiv.org/abs/2303.15343v4 代码地址:https://github.com/google-research/big_vision bib引用: misc{zhai2023sigmoidlosslanguageimage,title{Sigmoid Loss for Language Image Pre-Training}, author{Xiaohua Zhai and…...
深度学习笔记——循环神经网络之LSTM
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍面试过程中可能遇到的循环神经网络LSTM知识点。 文章目录 文本特征提取的方法1. 基础方法1.1 词袋模型(Bag of Words, BOW)工作…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
