记一次诡异的程序运行起始就段错误
来源:互联网 发布:网络教育大专文凭 编辑:程序博客网 时间:2024/05/16 10:46
现象:
用交叉编译器编译了一个程序到板子上运行,发现运行时段错误,连main函数下第一句log都没有打印。
也就是诡异还没进入main函数就已经段错误。
分析:
程序运行时理论上应该先准备分配内存,然后将所需要的库映射到对应的共享库区域,因为比较懒,所懒得在板子上搭建gdb开发环境,所以分析大概率为共享库加载出错。
解决:
其实我的程序编译时依赖了两个共享库,分别为A和B,但是实际上我并没有调用库A,是库B依赖了库A ,但是由于库B在编译时没有加-lA,居然能编译通过,所以就没有管,而在编译我的程序时就会发现如果不加上-l库A就会报库A函数没有定义的错误,遂我在编译程序是加上了链接库A,表面上编译通过,没有任何问题,但在板子上运行时就会直接段错误。
还有一点就是编译共享库时不加链接依赖的三方库的话编译并不会报错,但是在运行时就会在main函数之前段错误,所以在编译程序时一定要加上依赖的库的依赖的三方库。
所以解决方式也一样,编译共享库时如果有依赖,一定要老老实实加上依赖,不然这种奇葩问题,还是搞扯的。
分析不够深入,期待有大神看到又在指教。
阅读全文
0 0
- 记一次诡异的程序运行起始就段错误
- Qt编程中诡异的段错误
- Qt编程中诡异的段错误
- 解决运行JScript的一个诡异错误
- ulimit 的功能和用法(程序进main函数就段错误)
- hello程序的一次运行
- MinGW下使用STL出现诡异的运行错误
- 为什么我用MyEclipse写的Servlet程序运行一次后下次运行就会变成下载?
- PB运行的程序只能运行一次
- 一次诡异的日志死锁
- 记一次"诡异"的mongodb进程退出事件
- 记一次数据库查询引发的诡异问题
- 诡异的500错误
- Linux下运行C++程序产生“段错误”的原因及其解决办法
- linux下运行程序后出现段错误的原因和解决案例
- linux下运行程序后出现段错误的原因和解决案例
- Linux下运行C++程序出现“段错误(核心已转储)”的原因
- linux下C编程free()时出现飘忽诡异的段错误(核心已转储)问题
- 如何查看一个进程已经运行的时间?
- 关于vue的语法规则检测报错问题
- spring boot中使用redis -Jedis
- Eclipse快捷键 最有用的快捷键
- 如何写一个给自己的框架写一个优雅的Java Config模块(五)
- 记一次诡异的程序运行起始就段错误
- Android内存泄露
- 样式清零代码
- Sicily 1020. Big Integer | 大整数取模运算
- 提高应用程序可用性的五个要点
- hdu4638-tarjan求桥-Caocao's Bridges
- 面向对象
- 【文件上传】uploadify插件配合java的使用,可以图片,按照步骤可以复制粘贴直接运行,2017年
- C语言中基础的字符与字符串的输入与输出