Mac M1编译C程序遇架构不兼容链接警告的解决方法咨询
Mac M1编译C程序时libpng架构不匹配警告的解决方法
方案1:重新编译适配arm64的libpng
- 若libpng是通过Homebrew安装的,先卸载现有x86_64版本:
brew uninstall libpng - 确保终端以arm64原生模式运行(右键终端→「显示简介」,取消勾选「使用Rosetta打开」)
- 重新安装libpng:
brew install libpng,Homebrew会自动编译生成适配arm64的库文件
方案2:通过Rosetta转译环境编译程序
- 右键终端→「显示简介」,勾选「使用Rosetta打开」,启动x86_64架构的终端会话
- 在该终端内重新编译你的C程序,此时编译环境为x86_64,会与现有libpng的架构匹配
方案3:生成通用二进制程序
- 编译时同时指定arm64和x86_64双架构,让程序兼容两种环境,示例编译命令:
gcc your_source.c -o output_program -arch arm64 -arch x86_64 -lpng - 生成的程序会自动适配当前系统架构,无需替换现有libpng
其他M1设备能正常运行,通常是因为他们的libpng已经是arm64版本,或是在Rosetta环境下完成的编译。
内容的提问来源于stack exchange,提问作者user22003114
相关产品推荐
相关产品推荐

