编译与 openssl 调用相关的 tdlib 程序时出现错误。
/opt/homebrew/opt/go/libexec/pkg/tool/darwin_arm64/link: running cc failed: exit status 1 ld: warning: directory not found for option '-L/usr/local/opt/openssl/lib' ld: library not found for -lssl clang: error: linker command failed with exit code 1 (use -v to see invocation)
openssl 已随brew 安装:
which openssl /opt/homebrew/bin/openssl
==> openssl@3: stable 3.1.2 (bottled) Cryptography and SSL/TLS Toolkit https://openssl.org/ /opt/homebrew/Cellar/openssl@3/3.1.2 (6,495 files, 28.4MB) * Poured from bottle using the formulae.brew.sh API on 2023-09-21 at 14:06:03 From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/o/[email protected] License: Apache-2.0
我尝试使用 pkg-config 并暴露下一个环境来解决此问题,但没有任何帮助。
export CGO_CFLAGS=$(pkg-config --cflags openssl) export CGO_LDFLAGS=$(pkg-config --libs openssl)
你也可以检查这些标志吗(.~/bashrc 或 ~/.zshrc):
export CGO_CFLAGS="-I/opt/homebrew/include" export CGO_LDFLAGS="-L/opt/homebrew/lib -lssl -lcrypto"
或者你可以使用pkg-config:
export CGO_CFLAGS="$(pkg-config --cflags openssl)" export CGO_LDFLAGS="$(pkg-config --libs openssl)"
所有 goroutine 处于无法继续执行的状态 - 死锁(即使使用等待组)
在Go语言中构建高效的键值对内存存储器,可以考虑以下几个步骤和技巧:选择合适的数据结构:map:Go语言内置的map类型是实现键值对存储的首选,因为它提供了快速的查找、插入和删除操作,平均时间复杂度为O(1)。sync.Map:如果需要在并发环境中使用,可以考虑使用sync.Map,它对并发读写进行了优化。优化内存使用:预分配内存:在创建map时,可以使用make(map[KeyType]ValueType, initialCapacity)来预分配内存,减少后续的内存分配和拷贝操作。使用合适的键值类型:
在Golang中处理反射断言类型不固定的情况攻略
如何在 Go 中获取不同操作系统下的换行符?
如何避免 Golang Goroutine 池中常见的错误
钉钉助手怎么打卡?钉钉助手打开教程