使用链接库

简介: 使用链接库

首先找一个空文件夹,新建一个 test.c 文件,并写入如下内容:

#include "hv/hv.h"
int main() {
  char exe_filepath[MAX_PATH] = {0};
  char run_dir[MAX_PATH] = {0};
  // 获取hv编译版本
  const char* version = hv_compile_version();
  // 获取可执行文件路径
  get_executable_path(exe_filepath, sizeof(exe_filepath));
  // 获取运行目录
  get_run_dir(run_dir, sizeof(run_dir));
  printf("exe_filepath=%s\n", exe_filepath);
  printf("run_dir=%s\n", run_dir);
  // 写日志
  LOGI("libhv version: %s", version);
  return 0;
}点击复制复制失败已复制


文件下载:test.c

接下来编译运行:

# 编译
$ gcc test.c -o test -I/usr/local/include -L/usr/local/lib -Wl,-R/usr/local/lib -lhv
# 运行
$ ./test
exe_filepath=/home/iric/桌面/test/libhv-test/test
run_dir=/home/iric/桌面/test/libhv-test
# 查看生成日志
$ cat libhv.20220731.log
2022-07-31 21:19:55.360 INFO  libhv version: 1.22.7.31 [test.c:19:main]点击复制复制失败已复制


提示

官方文档使用cc命令编译,这里使用gcc来编译,如果不加-I/usr/local/include -L/usr/local/lib -Wl,-R/usr/local/lib,则可以编译通过,但是运行的时候会报error while loading shared libraries: libhv.so: cannot open shared object file: No such file or directory错误。使用官方的编译命令:cc -std=c99 test.c -o test -lhv编译后仍然会报错,由于初次接触,还不知道为什么。


2022年7月31日补充

可以不加-L/usr/local/lib-I/usr/local/include,但是-Wl,-R/usr/local/lib不可以去掉。最简命令为:$ gcc test.c -o test -Wl,-R/usr/local/lib -lhv

目录
相关文章
|
2月前
|
Linux Windows
静态库和动态库
本文详细介绍了静态库和动态库的概念及使用方法。在 Linux 系统中,静态库以 `libxxx.a` 形式存在,而动态库则为 `libxxx.so`。文章分别讲解了如何创建和使用这两种库,并提供了具体的命令示例。此外,还介绍了将库文件添加到系统目录的方法,包括直接复制到默认库路径、修改环境变量以及编辑系统配置文件等方案。适合初学者了解库文件的基本操作。
|
2月前
|
小程序
在Masm32中如何静态链接自己编写的库文件
在Masm32中如何静态链接自己编写的库文件
|
6月前
|
消息中间件 NoSQL Linux
静态库与动态库
静态库与动态库
静态库与动态库
|
存储 Cloud Native Linux
C++ 动态库与静态库的区别?
C++ 动态库与静态库的区别?
|
存储 Linux 编译器
什么是链接库 | 动态库与静态库
什么是链接库 | 动态库与静态库
161 0
|
Shell 开发工具 C语言
动态库与静态库
本文目标:⭐认识动态静态库,学会结合gcc选项,制作动静态库⭐⭐了解动态库加载过程⭐。
动态库与静态库
|
vr&ar C语言 索引
静态链接和静态库
静态链接和静态库
173 0
1.4~1.9 静态库和动态库
1.4~1.9 静态库和动态库
155 0
1.4~1.9 静态库和动态库
|
Linux 开发工具 C++
Linux编译多个不同目录下的文件以及静态库、动态库的使用
先看两篇博文,作为基础知识。如果对C/C++编译链接过程都了解的话,可以跳过不看。 http://www.firedragonpzy.com.cn/index.php/archives/2556 http://www.
1852 0
|
vr&ar C语言