LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1122|回复: 4

Linux调用外部库gdal编译出错

[复制链接]
发表于 2009-12-30 21:09:53 | 显示全部楼层 |阅读模式
开发环境是ubuntu。
代码里面用到gdal库读写图像文件。
在 make的时候,出现一堆
main.cpp.text+0x71): undefined reference to `GDALAllRegister'
main.cpp.text+0x81): undefined reference to `GDALOpen'
main.cpp.text+0x97): undefined reference to `GDALDataset::GetRasterCount()'
main.cpp.text+0xa5): undefined reference to `GDALDataset::GetRasterXSize()'
main.cpp.text+0xb3): undefined reference to `GDALDataset::GetRasterYSize()'
main.cpp.text+0xf1): undefined reference to `GDALDataset::GetRasterBand(int)
这样的错误。
不知是否是没有找到头文件所致。
源代码我在windows下面编译正常。
gdal在linux下也通过congfigure,make,make install安装正常。
是否在linux下编译自己利用gdal库开发的程序的时候需要设置什么?在哪里设?
请各位指点,谢谢!
发表于 2009-12-31 09:04:05 | 显示全部楼层
这个不是没找到头文件,是没找到库,Makefile是怎么写的?
回复 支持 反对

使用道具 举报

发表于 2009-12-31 09:41:51 | 显示全部楼层
首先要去确认下你的gdal库文件是否放在了你的编译环境的默认搜索路径下,如果在了,要看下生成的是静态库还是动态库,如果是动态库,我记得好像还要调用下ldconfig啊什么的更新下缓存的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-2 16:36:15 | 显示全部楼层
Post by luoyong;2060782
这个不是没找到头文件,是没找到库,Makefile是怎么写的?

我在makefile中写了
LIB_EXTRA := /usr/local/lib/libgdal.so
不知对否?
在makefile中该如何指定程序要连接的外部动态连接库啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-2 16:37:59 | 显示全部楼层
Post by haohao_h;2060789
首先要去确认下你的gdal库文件是否放在了你的编译环境的默认搜索路径下,如果在了,要看下生成的是静态库还是动态库,如果是动态库,我记得好像还要调用下ldconfig啊什么的更新下缓存的。
gdal放在/usr/local/lib下面,已经设置LD_LIBRARY_PATH=/usr/local/lib

也用了sudo ldconfig -p
但还是不行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表