-lxx
xx是你的.so文件名
其實使用方法和你使用數學庫函數是一樣的,源代碼中添加
#include <math.h>,編譯的時候,加上-lm參數。
註:linux下的.so文件為共享庫,相當於windows下的dll文件。
linux下編寫調用so文件實例
.so是Linux(Unix)下的動態鏈接庫. 和.dll類似.
比如:
文件有: a.c, b.c, c.c
gcc -c a.c
gcc -c b.c
gcc -c c.c
gcc -shared libXXX.so a.o b.o c.o
要使用的話也很簡單. 比如編譯d.c, 使用到libXXX.so中的函數, libXXX.so地址是MYPATH
gcc d.c -o d -LMYPATH -lXXX
注意不是-llibXXX
test.c文件和一個test.h,這兩個文件要生成libsotest.so文件。然後我還有一個testso.c文件,在這個文件裡面調用libsotest.so中的函數。
編寫的過程中,首先是編譯so文件,我沒有編寫makefile文件,而是參考的2裡面說的直接寫的gcc命令。
因為so文件裡面沒有main函數,所以是不可執行的,所以編譯的時候要加上-c,只生成目標文件。
② DSYM文件
iOS平台中,dSYM文件是指具有調試信息的目標文件,文件名通常為:xxx.app.dSYM。如下圖所示:
為了方便找回Crash對應的dSYM文件和還原堆棧,建議每次構建或者發布APP版本的時候, 備份好dSYM文件
Bugly還原Crash堆棧時,需要根據UUID來匹配符號表文件,因此只有上傳的符號表文件的UUID與Crash對應APP的UUID一致時,才能准確地對堆棧進行還原。
通過命令查看UUID
通過符號表文件查看UUID
符號表文件的UUID與dSYM文件的UUID是一致的,因譽岩此可以通過符號表工具生成的符號表文件來查看dSYM文件的UUID:
生成符號表文件(.zip) ---> 解壓符號表文件(.symbol) ---> 使用文本編輯器打開符號表文件
其中符號表文件的「UUID」信息即Debug SO文件的UUID,亦是符號表文件的UUID,如果文件較大,建議使用「Sublime Text」等文本編輯器來打開符號表文件。
當我們軟體 release 模式打包或上線後,不會像我們在 Xcode 中那樣直觀的看到用崩潰的錯誤,這個時候我們就需薯跡要分析 crash report 文件了,iOS 設備中會有日誌文件保存我們每個應用出錯的函數內存地址,通過 Xcode 的 Organizer 可以將 iOS 設備中的 DeviceLog 導出成 crash 文件,這個時候我們就可以通過出錯的數虛並函數地址去查詢 dSYM 文件中程序對應的函數名和文件名。大前提是我們需要有軟體版本對應的 dSYM 文件,這也是為什麼我們很有必要保存每個發布版本的 Archives 文件了。
符號集是我們對ipa文件進行打包之後,和.app文件同級的後綴名為.dSYM的文件,這個文件必須使用Xcode進行打包才有。
每一個.dSYM文件都有一個UUID,和.app文件中的UUID對應,代表著是一個應用。而.dSYM文件中每一條崩潰信息也有一個單獨的UUID,用來和程序的UUID進行校對。
我們如果不使用.dSYM文件獲取到的崩潰信息都是不準確的。
符號集中存儲著文件名、方法名、行號的信息,是和可執行文件的16進制函數地址對應的,通過分析崩潰的.Crash文件可以准確知道具體的崩潰信息。
我們每次Archive一個包之後,都會隨之生成一個dSYM文件。每次發布一個版本,我們都需要備份這個文件,以方便以後的調試。進行崩潰信息符號化的時候,必須使用當前應用打包的電腦所生成的dSYM文件,其他電腦生成的文件可能會導致分析不準確的問題。
當程序崩潰的時候,我們可以獲得到崩潰的錯誤堆棧,但是這個錯誤堆棧都是0x開頭的16進制地址,需要我們使用Xcode自帶的symbolicatecrash工具來將.Crash和.dSYM文件進行符號化,就可以得到詳細崩潰的信息。
https://www.jianshu.com/p/0b6f5148dab8
http://foggry.com/blog/2015/07/27/ru-he-shou-dong-jie-xi-crashlog/
③ 怎樣使用ghost還原系統以及具體步驟
1、從光碟機啟動後選擇ghost工具,進入ghost啟動畫面。