Linux Cmake静态库链接

静态库和动态库使用的区别:

其中.a文件是静态链接库文件,静态库名称一般为xxx.a,在编译时和应用程序链接在一起,这样的应用程序占用空间较大,但是可以在任意台电脑上使用,而不必担心电脑上是否有库的存在。
.so是动态库链接文件 动态库名称一般为xxx.so,对于动态库即可以在编译时链接,也可以使用dlopen()/dlsym()/dlclose()函数在运行时调用,后种方式占用空间较小,且可以实现动态库在进程间共享,只在内存中保留一份,减少了内存开销。


Linux系统使用主要在与Cmake文件的使用:

# CMakeLists.txt
# CMake 最低版本号要求
cmake_minimum_required(VERSION 2.8)

# 项目信息
project(future_net)

# include路径
include_directories(${PROJECT_SOURCE_DIR}/lib)

# 把 第三方 库 的 .a 文件和 .h 文件放到 代码的 lib 文件夹
link_directories(${PROJECT_SOURCE_DIR}/lib)

# 设置可执行文件生成路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/../bin)

# 生成debug版本
SET(CMAKE_BUILD_TYPE "Release") 
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_LIB_SRCS 变量
aux_source_directory(. DIR_SRCS)

# 指定生成目标 
add_executable(future_net ${DIR_SRCS})

#下面的 libxxx 是 第三方库 的名字:
target_link_libraries(future_net libxxx)
# 其他系统库,如果链接失败也一起链接:
TARGET_LINK_LIBRARIES(future_net dl)
TARGET_LINK_LIBRARIES(future_net pthread)

你可能感兴趣的:(linux,cmake-使用)