1. 程式人生 > 實用技巧 >QT-Mac:使用阿里雲OSS sdk,在Mac OS10.13版本上執行崩潰

QT-Mac:使用阿里雲OSS sdk,在Mac OS10.13版本上執行崩潰

1.問題現象:

  使用阿里雲OSS SDK來上傳圖片,在MacOS 10.14,10.15等平臺上都能正常工作,但是在10.13版本上發現異常崩潰,奔潰日誌如下:

  

Process:               Exam_Client [24258]
Path:                  /Applications/Exam_Client.app/Contents/MacOS/Exam_Client
Identifier:            com.ats.examclient
Version:               4.0.1 (4.0.1)
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           Exam_Client [24258]
User ID:               501

Date/Time:             2021-01-19 11:04:52.186 +0800
OS Version:            Mac OS X 10.13.6 (17G14042)
Report Version:        12
Bridge OS Version:     3.0 (14Y901)
Anonymous UUID:        78496B48-3A4B-38AA-A4EA-34D632A3414C

Sleep/Wake UUID:       9487B19A-C280-4B75-95DE-00F774AB7FE6

Time Awake Since Boot: 250000 seconds
Time Since Wake:       4300 seconds

System Integrity Protection: enabled

Crashed Thread:        0  CrBrowserMain  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    DYLD, [0x4] Symbol missing

Dyld Error Message:
  Symbol not found: ____chkstk_darwin
  Referenced from: /Applications/Exam_Client.app/Contents/MacOS/Exam_Client
  Expected in: /usr/lib/libSystem.B.dylib 

 2.問題定位

  通過檢視程式執行日誌,發現當執行到上傳圖片時,程式崩潰退出,判斷是使用的oss的庫可能不支援10.13平臺

3.問題解決

  重現編譯阿里雲oss sdk,按照阿里雲OSS SDK安裝文件下載sdk原始碼,重點在於編譯時需要指定一下庫支援的平臺,我們在aliyun-oss-cpp-sdk目錄下找到CMakeLists.txt檔案,開啟並編輯它,在設定第一個project之前新增如下一行:

  set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "Minimum OS X deployment version")

然後按照編譯說明 執行 CMake 和make指令即可。