From e727820d8fc57538cd6970998d1bd2b11a83674b Mon Sep 17 00:00:00 2001 From: wuhuanzhou Date: Thu, 22 Apr 2021 12:53:24 +0800 Subject: [PATCH] strip after compilation (#32145) --- CMakeLists.txt | 8 ++++++++ paddle/fluid/inference/CMakeLists.txt | 5 +++++ python/setup.py.in | 6 ++++++ 3 files changed, 19 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index de95832cb3..580b711114 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -198,6 +198,7 @@ option(WITH_SW "Compile PaddlePaddle with sw support" OFF) option(WITH_MIPS "Compile PaddlePaddle with mips support" OFF) option(WITH_MUSL "Compile with musl libc instead of gblic" OFF) option(WITH_UNITY_BUILD "Compile with UnityBuild mode" OFF) +option(WITH_STRIP "Strip so files of Whl packages" OFF) # PY_VERSION if(NOT PY_VERSION) @@ -362,6 +363,13 @@ else() message(WARNING "On inference mode, will take place some specific optimization. Turn on the ON_INFER flag when building inference_lib only.") endif() +if(WITH_STRIP) + find_program(STRIP_PATH strip) + if(NOT STRIP_PATH OR NOT LINUX) + set(WITH_STRIP OFF CACHE STRING "Command strip is only used on Linux when it exists." FORCE) + endif() +endif() + add_subdirectory(paddle) if(WITH_PYTHON) add_subdirectory(python) diff --git a/paddle/fluid/inference/CMakeLists.txt b/paddle/fluid/inference/CMakeLists.txt index 93fd85f13c..d5af6a225e 100644 --- a/paddle/fluid/inference/CMakeLists.txt +++ b/paddle/fluid/inference/CMakeLists.txt @@ -119,3 +119,8 @@ if(NOT APPLE AND NOT WIN32) DEPENDS paddle_inference_shared) add_custom_target(check_symbol ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/.check_symbol") endif() + +if(LINUX AND WITH_STRIP) + add_custom_command(TARGET paddle_inference_shared POST_BUILD + COMMAND ${STRIP_PATH} $) +endif() diff --git a/python/setup.py.in b/python/setup.py.in index 19baa470fa..150af57380 100644 --- a/python/setup.py.in +++ b/python/setup.py.in @@ -516,6 +516,12 @@ else: with open("@PADDLE_BINARY_DIR@/python/paddle/README.rst", "r")as f: long_description = unicode(f.read(), 'UTF-8') +# strip *.so to reduce package size +if '${WITH_STRIP}' == 'ON': + command = 'find ${PADDLE_BINARY_DIR}/python/paddle -name "*.so" | xargs -i strip {}' + if os.system(command) != 0: + raise Exception("strip *.so failed, command: %s" % command) + with redirect_stdout(): setup(name='${PACKAGE_NAME}', version='${PADDLE_VERSION}', -- GitLab