Linux Cmake静态库链接

来源:互联网 发布:it职业培训 编辑:程序博客网 时间:2024/05/18 01:56

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

其中.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)

原创粉丝点击