demo4示例 链接第三方动态库,静态库。

使用cc_import链接外部库。原理是通过cc_import规则导入第三方库,然后cc_binary再依赖cc_import规则的target,也即依赖第三方库。

demo4目录树

├── link

│ ├── BUILD

│ ├── include

│ │ ├── func.h

│ │ └── static.h

│ ├── lib

│ │ ├── libfunc.so  由shared_lib生成

│ │ └── libstatic.a  由static_lib生成

│ └── main.c

├── README.md

├── shared_lib

│ ├── BUILD 动态库的目标名必须写成libfoo.so的形式

│ ├── func.c

│ └── func.h

├── static_lib

│ ├── BUILD 静态库的目标名可以省略lib*.a

│ ├── static.c

│ └── static.h

└── WORKSPACE

先分别将shared_lib和static_lib生成对应的动态库和静态库,然后在link包中链接这两个库,最后有main.c调用库中的API。

static_lib BUILD

cc_library(

name = "static",

srcs = ["static.c"],

hdrs = ["static.h"],

linkstatic = True,

)

shared_lib BUILD

cc_binary(

name = "libfunc.so",

#name = "func",#必须写成libfunc.so,否则编译不过

srcs = ["func.h","func.c"],

linkshared = True,

)

link BUILD

cc_import(

name = "func",

hdrs = ["include/func.h"],

shared_library = "lib/libfunc.so",

)

cc_import(

name = "static",

hdrs = ["include/static.h"],

static_library = "lib/libstatic.a",

)

cc_binary(

name = "link_static_shared",

srcs = ["main.c"],

deps = [":func",":static"],

copts = ["-Ilink/include"],

)

参考:

bazel 链接_bazel-链接第三方动态库,静态库。相关推荐

  1. CMake 添加头文件目录,链接动态、静态库(添加子文件夹)

    CMake支持大写.小写.混合大小写的命令. 当编译一个需要第三方库的项目时,需要知道: 去哪找头文件(.h),-I(GCC) INCLUDE_DIRECTORIES() 去哪找库文件(.so/.dl ...

  2. cmake中添加引用动态链接_CMake 添加头文件目录,链接动态、静态库(添加子文件夹)...

    CMake支持大写.小写.混合大小写的命令. 当编译一个需要第三方库的项目时,需要知道: 去哪找头文件(.h),-I(GCC) INCLUDE_DIRECTORIES() 去哪找库文件(.so/.dl ...

  3. c语言makecode头文件,cmake 添加头文件目录,链接动态、静态库

    罗列一下cmake常用的命令. CMake支持大写.小写.混合大小写的命令. 1. 添加头文件目录INCLUDE_DIRECTORIES 语法: include_directories([AFTER| ...

  4. VS2015编译32位Opencv310(动态库+静态库,文末有下载链接)

    VS2015编译32位Opencv310(动态库+静态库 编译过得,可以直接用的: http://download.csdn.net/download/longzaihuaxia/9802510 之前 ...

  5. linux系统应用学习(三)--- 动态库静态库

    动态库静态库 库文件:一般指第三方提供的可调用的库函数文件,库文件封存的是函数体,即.c文件里面的内容. 动态库      静态库 Windows下:        xx.dll            ...

  6. linux库引入之动态库静态库(生成和使用)

    库: 库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.就是将源代码转化为二进制格式的源代码,相当于进行了加密,别人可以使用库,但是看不到库中的内容. 如何使用 用户需要同时具有头文件和库. ...

  7. 硬核拆解动态库静态库

    [Github pages] 动态库与静态库是编程中十分常见的玩意儿,但是如此常见的东西在我真正用心去了解梳理过一遍之后才发现原来这里面有这么多的门道.本文就介绍一波 Linux 平台下,特指 GCC ...

  8. linux库--静态库、动态库

    文章目录 一.分文件编程思想 二.动态库静态库 1.概念介绍 2.静态库的制作和使用 3.动态库的制作和使用 一.分文件编程思想 好处: 分模块的编程思想 例如: 网络 a 超声波b 电机c a.功能 ...

  9. cmake 添加头文件目录,链接动态、静态库

    罗列一下cmake常用的命令. CMake支持大写.小写.混合大小写的命令. 1. 添加头文件目录INCLUDE_DIRECTORIES 语法: include_directories([AFTER| ...

最新文章

  1. 马斯克:SpaceX成功的背后,经历了18次失败、被骂是骗子、几近破产
  2. Python的第一个程序 Hello world
  3. Qt对象类型转换(char* int与Qstring间的转换)
  4. css3 渐变色 3种,css3实现渐变色文字的三种方法
  5. Weighted Slope One 算法
  6. java中怎么判断字符相等_Java中如何判断两个字符串相等
  7. python支持哪些平台开发_【后端开发】python能兼容哪些平台
  8. 批量执行特定文件目录下SQL文件脚本
  9. 旅游推荐系统毕业设计总结(包含旅游信息爬取、算法应用和旅游推荐系统实现)
  10. IDEA+EmmyLua Lua开发环境搭建
  11. CMOS门基本工作原理
  12. Win8操作系统下IIS如何配置asp.net的运行环境
  13. c盘瘦身。清理四个垃圾文件夹
  14. 3d游戏计算机怎么配置要求吗,3DMAX软件对电脑的配置要求
  15. 【STM32Cube_14】使用硬件I2C读写环境光强度传感器(BH1750)
  16. CMD 禁用 笔记本自带的键盘
  17. 使用Git Bash实现Git代码上传加密
  18. 电视机和机顶盒等焦点问题
  19. CentOS 7 下的软件安装方法及策略
  20. 利用百度ocr识别验证码

热门文章

  1. visual studio过期登录不了账户_具有最高管理权限账户,Windows 7设置Administrator密码永不过期...
  2. python requests库详解_python的requests库详解
  3. python怎样将list转化成字典_在python 中如何将 list 转化成 dictionary
  4. cesium 经纬度绘制点_NCL绘制2016年1号台风(Nepartak)
  5. [转载] JAVA笔记_(Day04,Day05)函数数组
  6. 退火算法 贪婪算法_算法贪婪策略简介
  7. python dict底层实现_dict实现原理和哈希表
  8. 陕西2021高考成绩在哪查询,2021陕西高考成绩查询入口
  9. scala集合中添加元素_如何在Scala中将元素添加到列表中?
  10. Java FilterInputStream skip()方法与示例