这个不需要什么解释吧;
2018.6.1 增加新内容<<<<<<<<<<<<<<<
:其实这是 API19之前的内存地址随机话的要求;
后来的api版本强制要求了PIE了.所以根本上不用加这个了如果你的target api 版本>19的话
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
android.mk 文件
LOCAL_CFLAGS += -fPIE
LOCAL_LDFLAGS += -fPIE -pie
CMAKE
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE -pie")
下边是一个executeable的例子:
# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html
# Sets the minimum version of CMake required to build the native library.
cmake_minimum_required(VERSION 3.4.1)
# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.
set(EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/build/${ANDROID_ABI}")
SET(SRC_LIST
websever.cpp
mns_handler.cpp
mns/mns_client.cpp
mns/mns_common_tool.cpp
mns/mns_exception.cpp
mns/mns_network_tool.cpp
mns/mns_protocol.cpp
mns/mns_utils.cpp
mns/pugiconfig.hpp
mns/pugixml.cpp
SHA1.cpp
HMAC_SHA1.cpp
)
add_executable(httpsvr ${SRC_LIST})
target_include_directories(httpsvr PRIVATE
include/curl/
include/
mns/
${CMAKE_SOURCE_DIR}/)
find_library(log-lib log)
find_library(z-lib z)
add_library(libcurl STATIC IMPORTED)
set_target_properties(libcurl PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libcurl.a)
target_link_libraries(httpsvr libcurl ${z-lib})