dyld[22230]:未加载库:@rpath/SDL2.framework/Versions/A/SDL2 原因:未找到 LC_RPATH

问题描述 投票:0回答:1

操作系统MacOS Sonoma 14.3.1,处理器Apple M1。我遇到了运行编译后的程序的问题。正如“标题”中所写,我在运行可执行文件后得到了这个控制台输出:

> ./game
dyld[22230]: Library not loaded: @rpath/SDL2.framework/Versions/A/SDL2
  Referenced from: <(random symbols, I don't think show it is a good idea)> /Users/(my username)/Downloads/game-prototype/game
  Reason: no LC_RPATH's found
  zsh: abort   ./game

我已经在

Library/Frameworks
文件夹中手动安装了 SDL2 库及其附加组件,并通过自制程序 (
opt/homebrew/Cellar
) 安装了 SDL2 库,但自制版本从未工作。也许自制版本的问题是由于我没有启动这个程序,而是在
export PATH=/opt/homebrew/bin:$PATH
中添加
~/.zprofile
后才开始工作。我真的不明白为什么它不起作用。

程序是通过以下命令编译的:

clang main.c global.c on-create/*.c clock/*.c active/*.c -I/Library/Frameworks/SDL2.framework/Headers -F/Library/Frameworks -framework SDL2 -framework SDL2_image -framework SDL2_mixer -framework SDL2_ttf -o game

根据之前指定的错误,我打开可执行文件(

SDL2.framework/Versions/A/SDL2
)来检查其功能,控制台输出为:

zsh: exec format error: /Library/Frameworks/SDL2.framework/Versions/A/SDL2

Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]

告诉我,我该怎么办?

c macos zsh sdl-2 apple-m1
1个回答
0
投票

-rpath /Library/Frameworks
添加到 clang 调用中应该可以解决该问题。

或者,更改框架的安装名称,重新签名,然后重新编译二进制文件也可以修复它:

install_name_tool -id /Library/Frameworks/SDL2.framework/Versions/A/SDL2 /Library/Frameworks/SDL2.framework/Versions/A/SDL2
codesign -s - -f /Library/Frameworks/SDL2.framework/Versions/A/SDL2

有关安装名称的更深入解释,请参阅我的这个答案

© www.soinside.com 2019 - 2024. All rights reserved.