macOSと神秘的なminOS

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)
      
      



英語の元の出版物はここにあります












All Articles