3年間の休止の後、現在のバージョンのsViewがmacOSで再び利用できるようになりました。sView 20.08のリリースでは、macOS 10.10+のサポートが約束されていましたが、問題が発生し、一部のユーザーが奇妙な問題に対処しました。macOS10.13および10.14システムは、macOS10.15に更新する必要があるというメッセージとともにアプリケーションの起動を拒否しました...
エラーが私を困惑させたと言うことは、私の憤慨の程度を大幅に過小評価することです。なぜなら、マジックナンバー10.15はビルドスクリプトやsViewリソースのどこにも現れなかったからです!さらに、アプリケーションは古いバージョンのシステム、つまりmacOS10.10で個人的にテストされています。
少し背景。2011年に、OS X 10.6 Snow Leopard用の最初のsViewビルドがリリースされ、6年間、このバージョンのシステムはsViewを実行するための最小要件のままでした。比較的古いバージョンのオペレーティングシステムのサポートは、潜在的なユーザーを最大限にカバーしますが、追加の作業が必要です。
Windows、Linux、Android、およびmacOSアプリケーションの開発の実践は、コンパイルされたアプリケーションがすべてのバージョンのシステムで「動作するように見える」という仮定が定期的に失敗し、互換性の問題が予期しない方法で表面化することを示しています。このような場合、さまざまな(最も古い、正式にサポートされている)システムでアプリケーションのパフォーマンスをテストする機能が不可欠になります。
ただし、OS Xの古いバージョンでは、システム自体よりも後にリリースされたデバイスにシステムをインストールできないことが多いため、同じ古いデバイスが必要です。仮想化ツールで問題を解決できますが、macOSの場合はうまく機能していません。
. , OS X SDK XCode. SDK XCode SDK XCode, .
OS X 10.6 Snow Leopard, sView OS X , MacBook. OS X .
, Apple , , . , XCode macOS SDK - , - macOS :
MACOSX_DEPLOYMENT_TARGET
(..,export MACOSX_DEPLOYMENT_TARGET=10.0
);
-mmacosx-version-min
(..,EXTRA_CXXFLAGS += -mmacosx-version-min=10.0
).
CMake CMAKE_OSX_DEPLOYMENT
, qmake - QMAKE_MACOSX_DEPLOYMENT_TARGET
.
XCode 11 OS X 10.6, Hello World 10.7 . , OS X 10.6 Snow Leopard 2009 - , - . ?
OS X 10.10 Yosemite 6 6 "" macOS 11.0 Big Sur. OS X Apple. , OS X 10.10 MacBook - , .
“” mid-2010 MacBook , macOS , macOS 10.13 High Sierra 2017 .
, Apple 7 ! Apple macOS - OS X 10.10 macOS 10.13 .
sView Makefile
10.10
, Info.plist
LSMinimumSystemVersion=10.0
. macOS 10.15, Mac mini ‘2018, OS X 10.10 - !
… , , sView macOS, . ! 10.15
, LSMinimumSystemVersion
10.10
- macOS ?
- 10.15
. macOS 10.13, . , sView !
, - sView, , otool -l
:
Load command 9
cmd LC_BUILD_VERSION
cmdsize 32
platform macos
sdk 10.15
minos 10.15
ntools 1
tool ld
version 450.3
minos
, , macOS . , - , OS X 10.10 sView , macOS 10.13-10.14 ? OS X 10.10 minos
!
最後の質問が残りました-アプリケーションのビルドプロセス中にエラーがどこに忍び込んだのですか?sViewパッケージを調べると、フィールドはminos
プロジェクト自体のライブラリと実行可能ファイルにのみ存在し、同様の方法で構築されたFFmpegライブラリには存在しないことがわかりました。つまり、問題は明らかにMakefile
プロジェクトにありました。それが判明したように、フラグがされた-mmacosx-version-min
変数を介してコンパイラに渡されたEXTRA_CXXFLAGS
、しかし、リンカに渡されません。変数EXTRA_LDFLAGS
にフラグを追加すると、最終的に問題が解決しました。
TARGET_OS_VERSION = 10.10
EXTRA_CFLAGS += -mmacosx-version-min=$(TARGET_OS_VERSION)
EXTRA_CXXFLAGS += -mmacosx-version-min=$(TARGET_OS_VERSION)
EXTRA_LDFLAGS += -mmacosx-version-min=$(TARGET_OS_VERSION)
英語の元の出版物はここにあります。