报错信息如下:
在网上查找方案,没有找到有价值的信息,请问应该如何解决这种情况呢?
报错信息如下:
在网上查找方案,没有找到有价值的信息,请问应该如何解决这种情况呢?
遇到 ld: symbol(s) not found for architecture arm64
这类链接错误时,通常意味着你的程序或某个库在编译时没有正确地针对 Apple Silicon (M1 或更高版本的 ARM 架构) 进行编译。这里有几个步骤可以尝试解决这个问题:
确保你的开发环境已经为 ARM 架构做了优化。如果你使用的是 Homebrew,可以通过以下命令确保你的包管理器已经更新并且支持 ARM 架构:
brew update
brew upgrade
确保你安装的 PHP 版本和所有相关依赖都是为 ARM 架构编译的。你可以从 PHP 官网或使用如 Homebrew 这样的包管理器安装 ARM 架构的 PHP。
如果你从源代码编译 PHP,确保使用了正确的配置选项来支持 ARM 架构。通常,这不需要额外的配置,因为现代的编译系统(如 autoconf 和 configure 脚本)会检测并设置正确的架构。但如果你手动指定了某些编译选项,确保它们不包含任何可能导致问题的架构特定选项。
如果你的 PHP 编译依赖于外部库(如 OpenSSL, MySQL, GD 等),确保这些库也是为 ARM 架构编译的。你可以使用如下命令来安装或更新这些库(以 OpenSSL 为例):
brew install openssl
有时候,旧的编译文件或配置可能会干扰新的编译过程。尝试清理之前的编译结果并重新编译:
make clean
./configure [你的配置选项]
make
sudo make install
检查你的 Makefile 或编译脚本中是否有任何特定的链接器(ld)标志,这些标志可能指定了错误的架构。通常,这些标志是自动生成的,但如果你手动修改了它们,可能会遇到问题。
仔细查看链接器错误输出的详细信息,看看是哪个符号或库导致了问题。这可以帮助你确定是哪个组件或库需要更新或重新编译。
如果以上步骤都不能解决问题,你可以考虑在 Stack Overflow 或 PHP 的相关论坛发帖求助。在发帖时,提供尽可能多的信息,包括你的操作系统版本、PHP 版本、编译命令、完整的错误输出等。
希望这些步骤能帮助你解决问题!
可能是在dns源代码中引用这些外部变量 php_parserr,res_9_dn_shkpname ,但是链接的时候找不到才报错,所以要找到包含这些变量或者说模块
这些变量可能是在一些第三方中你没有引进来,所以使用
brew install libiconv curl libpng 等依赖项全部安装一下
然后make clean ,重新编译一下试试
2 回答1.3k 阅读✓ 已解决
2 回答784 阅读✓ 已解决
1 回答772 阅读✓ 已解决
1 回答976 阅读✓ 已解决
1 回答777 阅读
2 回答850 阅读
2 回答831 阅读
你是不是按照错包了,你去下载arm64的包