在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Android/ cmake編譯.so庫體積非常大,求解答

cmake編譯.so庫體積非常大,求解答

最近用cmake替代ndk-build編譯so庫,編譯出來的so庫打出很多,ndk-build編譯的400k左右,cmake編譯出的達(dá)到4.5M。
Gradle插件的版本是:gradle:3.0.0,gradle版本是:gradle-4.1-all.zip。
build.gradle cmake 配置如下:`

    ndk {
        abiFilters 'armeabi','armeabi-v7a','x86'
    }

externalNativeBuild {
    cmake {
        arguments '-DANDROID_PLATFORM=android-21',
                '-DANDROID_TOOLCHAIN=clang',
                '-DCMAKE_BUILD_TYPE=Release'
        targets 'myso'
    }
}`

CMakeLists.txt 文件配置如下:

cmake_minimum_required(VERSION 3.4.1)
set (CMAKE_CXX_STANDARD 14)

set(CMAKE_VERBOSE_MAKEFILE ON)

add_library(so SHARED  IMPORTED)

set_target_properties( 
              so 
              PROPERTIES IMPORTED_LOCATION
              ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/so.so)


add_library( 
         myso
         SHARED
         XXX.cpp
         .......
         xxx.c
         ...
         )

target_include_directories(myso  PRIVATE
                           src
                           .....
                           )

find_library( 
              log-lib
              log )
target_link_libraries( 
                   myso
                   so 
                   android
                   log
                   )
set(distribution_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../dis)
set_target_properties(myso  
                  PROPERTIES
                  LIBRARY_OUTPUT_DIRECTORY
                  "${distribution_DIR}/lib/${ANDROID_ABI}")

我用as打開兩個myso.so庫對比了下里面的字符,前1000行是一樣的,用cmake編譯出來的1000行以后多出了很多東西,總共有兩萬多行,不知道是什么原因造成的。有了解的大神求指教,萬分感謝!

回答
編輯回答
耍太極

同樣遇到這個問題了,樓主怎么解決的?
cmake設(shè)置了為release,但是打出的包卻是debug的包,非常大

2018年7月25日 03:54
編輯回答
陌顏

大神怎么解決的,可以把詳細(xì)步驟給描述下?

2017年9月30日 03:45
編輯回答
檸檬藍(lán)

好久沒有上,貼上下我的解決方案,希望對遇到同樣問題的朋友有幫助。再次感謝@darkengine.
該問題是編譯過程中生成二進(jìn)制碼沒有被剝除,需要在CMakeLists.txt中加入如下設(shè)置。
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s")

2018年2月26日 14:44
編輯回答
薄荷糖

看看是不是沒去掉調(diào)試信息,strip還是什么flag來著,用這個關(guān)鍵字谷歌一下

2017年1月6日 21:16