对C++库链接的认识
1. 疑惑
- 编译所依赖的头文件怎么目录怎么指定?
- 链接时必须给出动态文件还是只给定动态文件所在的目录就可以
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. 结果
- 用include_directories()来指定头文件的路径
- 必须给出动态文件还是只给定动态文件所在的目录会报错
- 链接库的三种方法
(1) link_directories + target_link_libraries
(2) link_libraries
(3) target_link_libraries
对C++库链接的认识相关推荐
- 记boost在gcc的一个库链接问题generic_category()
报错大致如下: main.cpp:(.text+0x49): undefined reference to `boost::system::generic_category()' main.cpp:( ...
- GCC中同时使用动态和静态库链接的编译
2019独角兽企业重金招聘Python工程师标准>>> 如何同时同时使用动态和静态库链接,在GCC指令参数中具体参数如下: -Wl,-Bstatic -L/usr/local ...
- GCC同时使用静态库和动态库链接
转自:https://www.cnblogs.com/lidabo/p/6206504.html chapter1 在应用程序需要连接外部库的情况下,linux默认对库的连接是使用动态库,在找不到动态 ...
- 动态库链接boost静态库
为了避免项目布署麻烦,需要将执行文件尽量静态链接 1. boost库全部静态链接 2. c++库静态链接 1,2点的改变如下,强制链静态库的方法为参数下为-l:libXXXX.a; 对于boost l ...
- mingw64下动态库和静态库链接的真正区别和用法(详细)
笔者一直以来都对mingw64下动态库和静态库链接的真正区别和用法存疑,于是做了一些测试,这篇文章记录了测试过程和测试结果,如果只想知道结果可以跳转到文章末尾 一.准备工作 首先准备三个测试文件 其中 ...
- 动态库、静态库编译测试:含静态库链接动态库、静态库,动态库链接静态库、动态库
本文的目的是测试各种类型库的编译后的使用效果,包括库又链接其他库的编译方法,使用方法,依赖性等. 太长不看版:请跳至文章最后的总结对比表. 一.内容包含: ①静态库libbb.a依赖静态库libaa. ...
- Go 编译的可执行文件是否有动态库链接?
Go 引用了其他包的话,是将引用的包都编译进去.用 ldd 看几个 Go 编译出来的二进制程序有的没有动态链接库的使用.但是有的又有引用动态链接库,这个是为什么? 回答:Go 默认是开启 CGO_EN ...
- linux gcc 包含头文件 动态库 静态库 链接路径问题
C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径.自己指定的路径就不说了,这里说明一下系统自动搜索的路径. [1 ...
- 【Android FFMPEG 开发】Android Studio 中配置 FFMPEG 库注意事项 ( 静态库 链接 libz.so 库 | 导入 FFMPEG 函数库顺序 )
文章目录 I . 导入 z 库 ( FFMPEG 动态库 与 静态库区别 ) II . FFMPEG 库引入顺序 III . Android Studio 中 FFMPEG 静态库引入完整 CMake ...
最新文章
- python下载的库要放到哪里-Python下载url并保存文件的三种方法
- 扩展ToolBarManager、ListView和Grid控件以实现气球式的ToolTip
- SNMP协议简要教程
- php重放,Api 接口安全-防篡改,防重放理解总结
- D. Flowers
- 数组玩法(1):下标移位
- Python进程学习笔记-多进程修改全局变量
- HashMap简单小结
- 轻松实现页面提交时,显示“提交中..” (转帖)
- Netty(四十一) - 心跳(heartbeat)源码剖析
- 更改itunes备份路径【windows备份iphone数据】
- 多种方式查看电脑是否支持Modern Standby
- Android Remote Administrator Tool ——SpyNote 6.5 Released
- 王立柱《c语言》3.5.4
- 广东惠州港口吞吐量稳中有升
- 网络软件-管理网络设备和组件
- 同步器Synchronizer
- MFC使用Windows API实现U盘插拔检测,获取U盘容量,U盘内容移动删除,开启和关闭U盘以及获取盘符
- bp神经网络模式识别,bp神经网络数字识别
- 不懂word2vec,还敢说自己是做NLP?
热门文章
- 不要和自己的大脑抗争,将大脑的能耗降到最低
- IBM ServerGuide 9.0
- 华为——宏达电最需要害怕的新对手
- 【匿名网络综述】匿名分布式网络之匿名网络综述
- Linux上搭建Magento电子商务网站
- led灯亮度渐变实现
- JavaScript通过下标获取对象(字典)指定键和值
- 解决办法:git错误 error: failed to push some refs to ‘https://github.com/...
- arduinopn532模块_Arduino 开源 NFC近场通讯模块 PN532
- 看电视剧《天道》一点感想 + 法兰克福美景Opencv聚类分析