软件测试实验学习笔记系列4--CppUnit

发表于:2013-8-07 11:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:xiajian2010    来源:51Testing软件测试网采编

  注:程序中dlopen,dlsym,dlclose这三个程序使用过了

  编译命令:cc-o testlibdl testlibdl.c -ldl

  执行./testlibdl结果

  /lib/i386-linux-gnu/libc.so.6:undefined symbol: Apply

  虽然程序没干啥事,但是它使用libdl库的,并且没有出现连接错误。难道是因为库路径的问题?尝试了添加符号链接文件到/lib,/usr/lib这些目录下,错误依旧,就这样我已经消耗了2,3小时,就这样不断的编译,不断的查看Makefile文件(足足有800多行的Makefile文件,看的我头都大了)

  最后,就在我快要放弃的时候,在参考[5]中发现这样的话“本人是安装的desktop-i386版本。make的时候提示dlopen、dlclose等函数找不到.检查上边的编译命令发现其中有-ldl选项,但是位置不对,位置应该放到最后去,而编译命令的最后一个是-lm.于是在出错的几个文件夹下面将Makefle中的-lm选项后面加上-ldl再执行make命令即可编过”

  问题已经找到了,是-ldl命令的位置的问题。因为-lm总是出现在最后,我就在所有编译问题的目录Makefile的LIBS=-lm后面添加了一个-ldl选项,然后编译一下,遇到通过的就添加-ldl选项,终于都执行make通过了。

  最后 sudo make install,将cppunit安装到/usr/local/lib中。我们可以使用命令 ls /usr/local/lib/ |grep libcppunit 查看是否整个安装好了。如果安装好了,会出现下面这些库.

libcppunit-1.12.so.1
libcppunit-1.12.so.1.0.0
libcppunit.a
libcppunit.la
libcppunit.so

  在至此探索中发现libldl.so库是一个有意思的动态链接库。

    Ps:

Interface Libraries
NAME
libdl - dynamic linking library
SYNOPSIS
cc [ flag... ] file... -ldl [ library... ]
DESCRIPTION
Historically,  functions in libdl provided for dynamic linking support.
This functionality now resides in libc(3LIB).
This library is maintained to provide backward compatibility  for  both
runtime  and compilation environments. The shared object is implemented
as a filter on the runtime  linker.  See  ld.so.1(1).  New  application
development need not specify -ldl.
INTERFACES
The  shared object libdl.so.1 provides the following public interfaces.
See Intro(3) for additional information on shared object interfaces.
dladdr                        dladdr1
dlclose                       dldump
dlerror                       dlinfo
dlmopen                       dlopen
dlsym

  6 .小结

  a)有些问题虽然解决方法很简单,但是,在遇到问题后想到这个简单的解决方法却不那么的容易。

  b)最难的是要找到问题在哪里,知道了问题在哪里后,很多事情都是可以解决的。现实是很多情况下,我们不知道问题在何处,因此需要探索,需要”撞墙“。

相关文章:

软件测试实验学习笔记系列3--单元测试

软件测试实验学习笔记系列5-单元覆盖测试

44/4<1234
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号