日期:2014-05-16  浏览次数:20629 次

linux动态库使用问题
我下载安装了ortp库,编译例程时出现如下错误:请问是什么原因?
[root@localhost rtpsend]# arm-hismall-linux-gcc rtpsend.c -o rtpsend
/tmp/ccimEg9E.o: In function `main':
rtpsend.c:(.text+0x1c0): undefined reference to `ortp_init'
rtpsend.c:(.text+0x1c4): undefined reference to `ortp_scheduler_init'

1,生成的库文件包括libortp.la、libortp.so libortp.so.8 libortp.so.8.0.0,请问各个文件有什么区别?
2,我将头文件拷贝到交叉编译器对应头文件目录,并且也把上述库文件拷贝到对应lib目录(假设我存放的目录是正确的),拷贝时也未改变文件属性  cp -a libortp.*  /lib,.so文件有连接属性,而对应的so.8.0.0是普通文件,请问这个文件是做什么用的?
3,如何查看交叉编译器的动态库和头文件目录(通过环境变量还是?)?比如我想用ortp库,我要将该库的头文件和库文件分别放到哪个文件夹呢?这个目录是在makefile指定的吗?

3个问题其实可以认为是一个问题,描述的可能有点乱,对这方面认识比较模糊,请前辈指点一下

------解决方案--------------------
linux下共享库 为*.so文件;*.a为静态库;*.la为配置文件,一般可以用VI直接打开查看。
对于libortp.so libortp.so.8 libortp.so.8.0.0 一般是前两个软连接于最后一个这个文件,这样个人常见得可能是在链接时不需要理会库的版本信息,只需要名称就行。
GCC默认是在系统目录下查找引用库,也可以自己手动设置库引用路径,通在终端中修改LD_LIBRARY_PATH的值。
你的这个问题,是没有找到包含ortp_*信息的库文件