Qt for Android 編譯純C工程

    可以直接通過 Qt Creator 來建立非Qt C 工程,如下圖所示:

    選擇構建 Android 版本,即可構建安卓平臺可用的 so 檔案,並且沒有 version name,可以正常使用。但是存在一個問題,構建出來的動態庫(so)檔案,會依賴 gnustl_shared 這個動態庫。但我們是純 C 工程啊,完全沒必要。怎麼辦?下面是解決辦法:

    找到你的 Qt 安裝目錄,下面會有 android_armv5 ,android_armv7 等目錄,提到的兩個目錄下都有 android-g 目錄。我的計算機上路徑是這樣的: C:\Qt\Qt5.2.0\5.2.0\android_armv7\mkspecs\android-g 。裡面有個 qmake.conf 檔案。通過修改這個檔案,就可以讓純 C 的工程生成的 so 不依賴 gnustl_shared 這個 STL 庫。

    這樣改:找到 QMAKE_LIBS_PRIVATE 這行,把 -lgnustl_shared 移除即可。

    如上修改後,如果你編譯 C 又需要 STL 的工程,則可能會報連結錯誤,不過有辦法,在你的pro檔案中加上 LIBS = -lgnustl_shared 即可。