使用-F / System / Library / PrivateFrameworks切换

时间:2018-01-09 16:36:46

标签: objective-c macos clang

我正在使用https://github.com/imkira/mobiledevice中的移动设备应用。

但是自从最新的Mac OSX更新10.13.02(17C88)以来,我再也无法编译移动设备应用程序,因为clang抱怨没有找到在/ System / Library / PrivateFrameworks中搜索到的私有“MobileDevice”框架。

$ git clone https://github.com/imkira/mobiledevice
$ cd mobiledevice 
$ make
clang ... -o mobiledevice ... -framework MobileDevice -F/System/Library/PrivateFrameworks -DMOBILEDEVICE_CLI_VERSION=\"2.0.0\" -DMOBILEDEVICE_CLI_REVISION=\"8134c5e7edd97bf718490eaadb3639bda276e596\" cli.m commands.m device.m get_app_prop.m get_bundle_id.m get_device_prop.m help.m install_app.m invalid_usage.m list_app_props.m list_apps.m list_device_props.m list_devices.m tunnel.m uninstall_app.m version.m
ld: framework not found MobileDevice
clang: error: linker command failed with exit code 1 (use -v to see invocation)

但是我可以看到该框架仍然存在于目录/ System / Library / PrivateFrameworks中。

似乎clang正在过滤-F / System / Library / PrivateFrameworks开关。

任何提示如何解决问题?

2 个答案:

答案 0 :(得分:0)

回答我自己的问题我发现将MobileDevice.framework复制到另一个位置(。)并将框架路径设置为该位置使clang识别出私有框架。 所以它清楚地告诉我,clang已经过滤了-F / System / Library / PrivateFrameworks切换。

$ cp -a /System/Library/PrivateFrameworks/MobileDevice.framework ./MobileDevice.framework/
$ clang .. -o mobiledevice ... -framework MobileDevice -F.

不再提供“找不到框架”错误

答案 1 :(得分:0)

接受的答案在 Big Sur 上对我不起作用。我发现没有提供 /System/Library/PrivateFrameworks 而是 /Library/Apple/System/Library/PrivateFrameworks 解决了它。