下面来看一下我编译时报错的信息

下面我再给出一个代码,大家运行一下

#include <stdio.h>void test(void)
{printf("Hello World");
}
//保存以.c文件,并且以gcc -fPIC --shared a.c -o liba.so 运行

下面再运行一个代码

#include <stddef.h>
#include <dlfcn.h>int main(void)
{void *handle = dlopen("./liba.so", RTLD_NOW | RTLD_GLOBAL);if (handle != NULL){void (*pfun)(void) = dlsym(handle, "test");pfun();dlclose(handle);}return 0;
}
//同样以.c文件保存 先以gcc -Wall b.c -o b运行

是不是报错了,这是一个平常随处可见的错误,想想为什么?

//最后以这样运行试试呢
gcc -Wall b.c -o b -ldl

是不是不报错了,我们多加了什么?参数?-ldl 意思就是去找libdl.so这个动态库

再想想为什么会报了“ undefined reference to symbol ‘dlsym@@GLIBC_2.4’ ”这个错误,因为没有找到dlsym函数

最后再运行b文件呢?

和大佬交流后,才知道这是跟C库版本有关,C库2.4版本有个dlsym,其他2.5版本也有可能有个dlsym函数。GLIBC_2.4—glibc 就是指 GNU 开发的C语言库——GNU library C。
查看man dlsym 也明确指出需要-ldl

更多请关注下一篇

undefined reference to symbol ‘dlsym@@GLIBC_2.4‘ 解决相关推荐

  1. 【Makefile】报错:undefined reference to symbol ‘pthread_spin_init@@GLIBC_2.2.5‘

    详细报错截图: gcc -std=gnu99 -Wall -O0 -g -o /home/book/SVN/LM20007/automatic_test/bin/autoTest /home/book ...

  2. 解决undefined reference to symbol ‘sem_close@@GLIBC_2.2.5‘问题

    错误图示 问题原因 编译的时候,没有引入库文件  sem()位于pthread库中,所以在编译和链接时请确保使用-pthread标志,因此在编译的时候需要导入pthread库文件 编译的顺序出现问题 ...

  3. clion编译器解决undefined reference to symbol ‘shm_open@@GLIBC_2.2.5‘

    修改CMakelists文件 cmake_minimum_required(VERSION 3.17) project(mutex_learn)set(CMAKE_CXX_STANDARD 14)se ...

  4. undefined reference to symbol' pthread_create@@GLIBC_2.2.5'

    我在ubuntu16.04上迁移工程,遇到了这个错误. pthread库不是Linux系统默认的库,链接时需要添加-pthread参数. 这里注意是链接那一步添加-pthread,而不是编译选项.

  5. 解决undefined reference to symbol ‘LZ4_decompress_safe‘问题

    文章目录 问题描述 解决方法 参考资源 问题描述 make时碰到如下问题 /usr/bin/ld: CMakeFiles/nearest_neighbors.dir/nearest_neighbors ...

  6. undefined reference to symbol ‘_ZN2cv7imwriteERKNS_6StringERKNS_11_InputArrayERKSt6vectorIiSaIiEE‘

    ubuntu系统,先装了opencv2.4.9,后来又安装了opencv3.0,qt下编译项目报错: :-1: error: tracker_run.o: undefined reference to ...

  7. opencv undefined reference to symbol '_ZN2c...异常

    异常: /usr/bin/ld: ./src/flann.o: undefined reference to symbol '_ZN2cv5flann12SearchParamsC1Eifb' 解决: ...

  8. openssl:undefined reference to symbol 'EVP_EncryptUpdate@@libcrypto.so.10'

    openssl:undefined reference to symbol 'EVP_EncryptUpdate@@libcrypto.so.10' 查看 openssl 版本: $ openssl ...

  9. SLAM 14讲中cere拟合曲线代码报错:undefined reference to symbol ‘omp_get_num_threads@@OMP_1.0‘

    视觉SLAM 14讲中cere拟合曲线代码报错: /usr/bin/x86_64-linux-gnu-ld: /usr/local/lib/libceres.a(coordinate_descent_ ...

最新文章

  1. 全民K歌内容挖掘与召回
  2. 使用Identity Server 4建立Authorization Server (3)
  3. Android:屏幕旋转
  4. 干货!操作系统基础知识汇总!转给要面试的同学吧
  5. docker初级操作
  6. 「源码分析」CopyOnWriteArrayList 中的隐藏知识,你Get了吗?
  7. EL表达式和JSTL标签库学习总结
  8. 实战 | 应急响应方法论思维导图
  9. 编译原理用C语言编写递归下降分析程序,编译原理递归下降分析器(C语言).pdf
  10. MapReduce 基础案例 之 平均值 计算
  11. 安徽计算机软件工程学院,安徽软件工程专业大学排名
  12. 魔板(最小步数模型)
  13. 生产环境使用 pt-table-checksum 检查MySQL数据一致性【转】
  14. 苹果状态栏HTML,iphoneX 适配客户端H5页面的方法教程
  15. 什么是ARPU与ARPPU ?
  16. 个人站长网站建设流程
  17. 【掘金使用技巧7】如何从通达信等迁移到掘金
  18. java编程文件传输_JAVA文件传输程序
  19. c++入门必学算法 并查集
  20. 22 行 JS 黑掉英国航空,38 万乘客受害;公有云被频繁用于 DDoS 攻击

热门文章

  1. java腾讯邮箱读取邮件(包含企业邮箱)
  2. Ubuntu 20.04.2.0 LTS 更改默认关联视频播放器VLC的方法
  3. 智子社区上线FCoin、IDCM即将扬帆起航
  4. C# net6微服务架构之服务注册与发现工具Consul的下载与安装(for windows)
  5. 一文弄懂Redis慢查询
  6. 王子救公主(DFS)
  7. Axure 元件库-原型
  8. 1分钟搞定ubuntu下配置mysql 奥利给
  9. 【Halcon视觉】定位
  10. 关于QQ的相关代码收集整理