1. 疑惑

  1. 编译所依赖的头文件怎么目录怎么指定?
  2. 链接时必须给出动态文件还是只给定动态文件所在的目录就可以

2. 准备

生成库文件libsayhello.so

sayhello.cpp

#include <iostream>
using namespace std;void sayhello()
{cout << "Hello!" << endl;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project(SAYHELLO)add_library(sayhello SHARED sayhello.cpp)

会生成一个libsayhello.so文件,将该文件任意文件夹中

3. 实验

main.cpp

#include <iostream>
using namespace std;void sayhello()
{cout << "Hello!" << endl;
}

sayhello.h

#ifndef __SAYHELLO_H__
#define __SAYHELLO_H__void sayhello();#endif

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project(SAYHELLO)# add_library(sayhello SHARED sayhello.cpp)include_directories(/home/lzf/slam/testso) # 添加文件路径# link_directories(/home/lzf/slam/testso/lib) # 添加库文件的路径,后面需要将库链接到可执行文件上link_libraries(/home/lzf/slam/testso/lib/libsayhello.so) # 链接编译所需要的动态文件add_executable(test main.cpp)
# target_link_libraries(test sayhello)  # 将库链接到可执行文件上# target_link_libraries(test /home/lzf/slam/testso/lib/libsayhello.so) # 或者不添加路径直接将文件链接到可执行文件上

4. 结果

  1. 用include_directories()来指定头文件的路径
  2. 必须给出动态文件还是只给定动态文件所在的目录会报错
  3. 链接库的三种方法
    (1) link_directories + target_link_libraries
    (2) link_libraries
    (3) target_link_libraries

对C++库链接的认识相关推荐

  1. 记boost在gcc的一个库链接问题generic_category()

    报错大致如下: main.cpp:(.text+0x49): undefined reference to `boost::system::generic_category()' main.cpp:( ...

  2. GCC中同时使用动态和静态库链接的编译

    2019独角兽企业重金招聘Python工程师标准>>> 如何同时同时使用动态和静态库链接,在GCC指令参数中具体参数如下:     -Wl,-Bstatic -L/usr/local ...

  3. GCC同时使用静态库和动态库链接

    转自:https://www.cnblogs.com/lidabo/p/6206504.html chapter1 在应用程序需要连接外部库的情况下,linux默认对库的连接是使用动态库,在找不到动态 ...

  4. 动态库链接boost静态库

    为了避免项目布署麻烦,需要将执行文件尽量静态链接 1. boost库全部静态链接 2. c++库静态链接 1,2点的改变如下,强制链静态库的方法为参数下为-l:libXXXX.a; 对于boost l ...

  5. mingw64下动态库和静态库链接的真正区别和用法(详细)

    笔者一直以来都对mingw64下动态库和静态库链接的真正区别和用法存疑,于是做了一些测试,这篇文章记录了测试过程和测试结果,如果只想知道结果可以跳转到文章末尾 一.准备工作 首先准备三个测试文件 其中 ...

  6. 动态库、静态库编译测试:含静态库链接动态库、静态库,动态库链接静态库、动态库

    本文的目的是测试各种类型库的编译后的使用效果,包括库又链接其他库的编译方法,使用方法,依赖性等. 太长不看版:请跳至文章最后的总结对比表. 一.内容包含: ①静态库libbb.a依赖静态库libaa. ...

  7. Go 编译的可执行文件是否有动态库链接?

    Go 引用了其他包的话,是将引用的包都编译进去.用 ldd 看几个 Go 编译出来的二进制程序有的没有动态链接库的使用.但是有的又有引用动态链接库,这个是为什么? 回答:Go 默认是开启 CGO_EN ...

  8. linux gcc 包含头文件 动态库 静态库 链接路径问题

    C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径.自己指定的路径就不说了,这里说明一下系统自动搜索的路径. [1 ...

  9. 【Android FFMPEG 开发】Android Studio 中配置 FFMPEG 库注意事项 ( 静态库 链接 libz.so 库 | 导入 FFMPEG 函数库顺序 )

    文章目录 I . 导入 z 库 ( FFMPEG 动态库 与 静态库区别 ) II . FFMPEG 库引入顺序 III . Android Studio 中 FFMPEG 静态库引入完整 CMake ...

最新文章

  1. python下载的库要放到哪里-Python下载url并保存文件的三种方法
  2. 扩展ToolBarManager、ListView和Grid控件以实现气球式的ToolTip
  3. SNMP协议简要教程
  4. php重放,Api 接口安全-防篡改,防重放理解总结
  5. D. Flowers
  6. 数组玩法(1):下标移位
  7. Python进程学习笔记-多进程修改全局变量
  8. HashMap简单小结
  9. 轻松实现页面提交时,显示“提交中..” (转帖)
  10. Netty(四十一) - 心跳(heartbeat)源码剖析
  11. 更改itunes备份路径【windows备份iphone数据】
  12. 多种方式查看电脑是否支持Modern Standby
  13. Android Remote Administrator Tool ——SpyNote 6.5 Released
  14. 王立柱《c语言》3.5.4
  15. 广东惠州港口吞吐量稳中有升
  16. 网络软件-管理网络设备和组件
  17. 同步器Synchronizer
  18. MFC使用Windows API实现U盘插拔检测,获取U盘容量,U盘内容移动删除,开启和关闭U盘以及获取盘符
  19. bp神经网络模式识别,bp神经网络数字识别
  20. 不懂word2vec,还敢说自己是做NLP?

热门文章

  1. 不要和自己的大脑抗争,将大脑的能耗降到最低
  2. IBM ServerGuide 9.0
  3. 华为——宏达电最需要害怕的新对手
  4. 【匿名网络综述】匿名分布式网络之匿名网络综述
  5. Linux上搭建Magento电子商务网站
  6. led灯亮度渐变实现
  7. JavaScript通过下标获取对象(字典)指定键和值
  8. 解决办法:git错误 error: failed to push some refs to ‘https://github.com/...
  9. arduinopn532模块_Arduino 开源 NFC近场通讯模块 PN532
  10. 看电视剧《天道》一点感想 + 法兰克福美景Opencv聚类分析