您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > cppUnit
软件测试实验学习笔记--CppUnit
作者: 发布时间:[ 2013/12/17 9:32:47 ] 推荐标签:

  注:程序中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)难的是要找到问题在哪里,知道了问题在哪里后,很多事情都是可以解决的。现实是很多情况下,我们不知道问题在何处,因此需要探索,需要”撞墙“。

上一页1234下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd