/usr/bin/ld: cannot find -l:libjpeg.so.8.3.0

jiaruo1226 2013-08-13 11:11:17
在摄像头采集完图像后采用libjpeg库将内存中的JPEG图像转换为BMP图像进行后续处理,但是在编译程序时出现了
/usr/bin/ld: cannot find -l:libjpeg.so.8.3.0
collect2: ld returned 1 exit status

的错误,我安装了libjpeg库,该路径下也有libjpeg.so.8.3.0.百度了但是一直没有解决,论坛里的朋友们遇到过这样的问题吗?请大家帮帮忙,卡了好几天了,不胜感激
...全文
786 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 10 楼 jiaruo1226 的回复:
[quote=引用 9 楼 qiyu1988 的回复:] 编译语句加 -L/usr/lib 运行的时候才用LD_LIBRARY_PATH
可是我的libjpeg库是安装在/usr/local/libjpeg目录下的,难道要安装到/usr/lib目录下吗?[/quote] o!看错,误导LZ了,抱歉。
qiyu1988 2013-08-14
  • 打赏
  • 举报
回复
LDFLAGS+=-L/usr/local/libjpeg/lib -ljpeg 如果/usr/local/libjpeg/lib下没有libjpeg.so文件,创建一个libjpeg.so到libjpeg.so.8.3.0的软连接
jiaruo1226 2013-08-14
  • 打赏
  • 举报
回复
引用 11 楼 qiyu1988 的回复:
额。。。那编译语句加 -L/usr/local/libjpeg -L是编译的时候搜索动态库的路径 怎么最近这么多人问这种问题。。。。楼主有空搜索下linux 下动态库的链接方式,了解清楚程序运行方式就容易找问题了
你看我的Makefile,已经添加了。 # use pkg-config for getting CFLAGS abd LDFLAGS #pkg-config --cflags --libs libavutil.pc libavcodec.pc libavformat.pc libavdevice.pc libavfilter.pc libswscale.pc FFMPEG_LIBS=libavdevice libavformat libavfilter libavcodec libswscale libavutil CFLAGS+=$(shell pkg-config --cflags $(FFMPEG_LIBS)) LDFLAGS+=$(shell pkg-config --libs $(FFMPEG_LIBS)) CFLAGS+=-I/usr/local/libjpeg/include LDFLAGS+=-L/usr/local/libjpeg/lib -l:libjpeg.so.8.3.0 EXAMPLES=encoding OBJS=$(addsuffix .o,$(EXAMPLES)) %: %.o $(CC) $< $(LDFLAGS) -o $@ %.o: %.c $(CC) $< $(CFLAGS) -c -o $@ .phony: all clean all: $(OBJS) $(EXAMPLES) clean: rm -rf $(EXAMPLES) $(OBJS)
qiyu1988 2013-08-14
  • 打赏
  • 举报
回复
额。。。那编译语句加 -L/usr/local/libjpeg -L是编译的时候搜索动态库的路径 怎么最近这么多人问这种问题。。。。楼主有空搜索下linux 下动态库的链接方式,了解清楚程序运行方式就容易找问题了
jiaruo1226 2013-08-14
  • 打赏
  • 举报
回复
引用 9 楼 qiyu1988 的回复:
编译语句加 -L/usr/lib 运行的时候才用LD_LIBRARY_PATH
可是我的libjpeg库是安装在/usr/local/libjpeg目录下的,难道要安装到/usr/lib目录下吗?
qiyu1988 2013-08-14
  • 打赏
  • 举报
回复
编译语句加 -L/usr/lib 运行的时候才用LD_LIBRARY_PATH
jiaruo1226 2013-08-14
  • 打赏
  • 举报
回复
引用 6 楼 songsong33 的回复:
应该还是敲错了的,你试试只输入expo,然后用tab键补齐,完事再把后面的字符一个个用键盘输入,不要用拷贝。 另外看命令提示符,你应该是在root下执行命令的吧?如果不是root,先切换到root用户,确保肯定有执行权限。
我按照你说的方法试过了,还是同样的错误。
jiaruo1226 2013-08-14
  • 打赏
  • 举报
回复
引用 20 楼 qiyu1988 的回复:
你把libjpeg.so.8.3.0指向了 libjpeg.so ls /usr/local/libjpeg/lib 看下哪个是jpeg的实体库,把libjpeg.so指向它
还是不行,能加个好友吗?我qq 564174616 远程协助一下
qiyu1988 2013-08-14
  • 打赏
  • 举报
回复
你把libjpeg.so.8.3.0指向了 libjpeg.so ls /usr/local/libjpeg/lib 看下哪个是jpeg的实体库,把libjpeg.so指向它
jiaruo1226 2013-08-14
  • 打赏
  • 举报
回复
引用 17 楼 qiyu1988 的回复:
我也试了添加软链接 ln -s libjpeg.so libjpeg.so.8.3.0 软链接错了
我执行ldconfig -v | grep libjpeg出现如下结果, [root@localhost usr]# ldconfig -v| grep libjpeg libjpeg.so.8 -> libjpeg.so.8.3.0 libjpeg.so.62 -> libjpeg.so.62.0.0 本身虚拟机里有libjpeg6的库,但是我的应用程序要用libjpeg8的库,所以我安装在/usr/local/libjpeg目录下。
jiaruo1226 2013-08-14
  • 打赏
  • 举报
回复
引用 17 楼 qiyu1988 的回复:
我也试了添加软链接 ln -s libjpeg.so libjpeg.so.8.3.0 软链接错了
什么意思?能说的详细点吗?
qiyu1988 2013-08-14
  • 打赏
  • 举报
回复
我也试了添加软链接 ln -s libjpeg.so libjpeg.so.8.3.0 软链接错了
jiaruo1226 2013-08-14
  • 打赏
  • 举报
回复
引用 13 楼 qiyu1988 的回复:
LDFLAGS+=-L/usr/local/libjpeg/lib -ljpeg 如果/usr/local/libjpeg/lib下没有libjpeg.so文件,创建一个libjpeg.so到libjpeg.so.8.3.0的软连接
首先/usr/local/libjpeg/lib下面有以下文件: libjpeg.a libjpeg.la libjpeg.so libjpeg.so.8 libjpeg.so.8.3.0 我也试了添加软链接 ln -s libjpeg.so libjpeg.so.8.3.0 然后按照LDFLAGS+=-L/usr/local/libjpeg/lib -ljpeg 修改Makefile make之后出现了如下错误: [root@localhost ffmpeg]# make cc encoding.c -I/usr/local/ffmpeg/include -I/usr/local/libjpeg/include -c -o encoding.o encoding.c: In function ‘main’: encoding.c:369: warning: ‘avcodec_alloc_context’ is deprecated (declared at /usr/local/ffmpeg/include/libavcodec/avcodec.h:3423) encoding.c:384: warning: ‘avcodec_open’ is deprecated (declared at /usr/local/ffmpeg/include/libavcodec/avcodec.h:3569) encoding.c:533: warning: ‘avcodec_encode_video’ is deprecated (declared at /usr/local/ffmpeg/include/libavcodec/avcodec.h:4273) encoding.c:577: warning: ‘avcodec_encode_video’ is deprecated (declared at /usr/local/ffmpeg/include/libavcodec/avcodec.h:4273) cc encoding.o -L/usr/local/ffmpeg/lib -lavdevice -lavformat -lavfilter -lavcodec -lswscale -lavutil -L/usr/local/libjpeg/lib -ljpeg -o encoding /usr/bin/ld: skipping incompatible /usr/local/libjpeg/lib/libjpeg.so when searching for -ljpeg /usr/bin/ld: skipping incompatible /usr/local/libjpeg/lib/libjpeg.a when searching for -ljpeg /usr/bin/ld: skipping incompatible /usr/local/libjpeg/lib/libjpeg.so when searching for -ljpeg /usr/bin/ld: skipping incompatible /usr/local/libjpeg/lib/libjpeg.a when searching for -ljpeg /usr/bin/ld: warning: libswresample.so.0, needed by /usr/local/ffmpeg/lib/libavfilter.so, not found (try using -rpath or -rpath-link) encoding.o: In function `jpeg_decompress': encoding.c:(.text+0x1548): undefined reference to `jpeg_mem_src' encoding.o: In function `main': encoding.c:(.text+0x19fa): undefined reference to `avcodec_init' /usr/local/ffmpeg/lib/libavfilter.so: undefined reference to `swr_set_channel_mapping@LIBSWRESAMPLE_0' /usr/local/ffmpeg/lib/libavfilter.so: undefined reference to `swr_alloc@LIBSWRESAMPLE_0' /usr/local/ffmpeg/lib/libavfilter.so: undefined reference to `swr_set_matrix@LIBSWRESAMPLE_0' /usr/local/ffmpeg/lib/libavfilter.so: undefined reference to `swr_next_pts@LIBSWRESAMPLE_0' /usr/local/ffmpeg/lib/libavfilter.so: undefined reference to `swr_free@LIBSWRESAMPLE_0' /usr/local/ffmpeg/lib/libavfilter.so: undefined reference to `swr_init@LIBSWRESAMPLE_0' /usr/local/ffmpeg/lib/libavfilter.so: undefined reference to `swr_alloc_set_opts@LIBSWRESAMPLE_0' /usr/local/ffmpeg/lib/libavfilter.so: undefined reference to `swr_convert@LIBSWRESAMPLE_0' collect2: ld returned 1 exit status make: *** [encoding] Error 1
jiaruo1226 2013-08-14
  • 打赏
  • 举报
回复
引用 13 楼 qiyu1988 的回复:
LDFLAGS+=-L/usr/local/libjpeg/lib -ljpeg 如果/usr/local/libjpeg/lib下没有libjpeg.so文件,创建一个libjpeg.so到libjpeg.so.8.3.0的软连接
按照您说的
引用 14 楼 songsong33 的回复:
[quote=引用 10 楼 jiaruo1226 的回复:] [quote=引用 9 楼 qiyu1988 的回复:] 编译语句加 -L/usr/lib 运行的时候才用LD_LIBRARY_PATH
可是我的libjpeg库是安装在/usr/local/libjpeg目录下的,难道要安装到/usr/lib目录下吗?[/quote] o!看错,误导LZ了,抱歉。[/quote] 没关系,很感谢您!
  • 打赏
  • 举报
回复
ldconfig -v | grep libjpeg查看有没有你要的库。没有的话,重新设置环境变量LD_LIBRARY_PATH加上你库在的路径;如: export LD_LIBRARY_PATH=/usr/lib:$(LD_LIBRARY_PATH)
jiaruo1226 2013-08-13
  • 打赏
  • 举报
回复
引用 6 楼 songsong33 的回复:
应该还是敲错了的,你试试只输入expo,然后用tab键补齐,完事再把后面的字符一个个用键盘输入,不要用拷贝。 另外看命令提示符,你应该是在root下执行命令的吧?如果不是root,先切换到root用户,确保肯定有执行权限。
您好,能加一下qq吗?远程协助一下,谢谢了!我的qq 564174616
  • 打赏
  • 举报
回复
应该还是敲错了的,你试试只输入expo,然后用tab键补齐,完事再把后面的字符一个个用键盘输入,不要用拷贝。 另外看命令提示符,你应该是在root下执行命令的吧?如果不是root,先切换到root用户,确保肯定有执行权限。
jiaruo1226 2013-08-13
  • 打赏
  • 举报
回复
引用 4 楼 songsong33 的回复:
export LD_LIBRARY_PATH=/usr/local/libjpeg/lib:$(LD_LIBRARY_PATH)
加了呀 [root@localhost ffmpeg]# export LD_LIBRARY_PATH=/usr/local/libjpeg/lib:$(LD_LIBRARY_PATH) bash: LD_LIBRARY_PATH: command not found
  • 打赏
  • 举报
回复
export LD_LIBRARY_PATH=/usr/local/libjpeg/lib:$(LD_LIBRARY_PATH)
  • 打赏
  • 举报
回复
你命令敲错了,前面export没加吧?
加载更多回复(1)

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧