当前位置: 技术问答>linux和unix
make 加载动态库的问题
来源: 互联网 发布时间:2016-03-03
本文导语: 我写个测试程序,要加载动态库,我的makefile文件如下,请大家看看是不是有什么问题: FILES = test.o libavcodec_dll.so # Compiler command name #CC =/opt/arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc CC = gcc # Compiler flags applied ...
我写个测试程序,要加载动态库,我的makefile文件如下,请大家看看是不是有什么问题:
FILES = test.o
libavcodec_dll.so
# Compiler command name
#CC =/opt/arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc
CC = gcc
# Compiler flags applied to all files
CFLAGS = -Os -Wall -D_DEBUG -D_VERBOSE -I./ -g
#CFLAGS = -Os -wall -D_DEBUG -D_VERBOSE -I./ -g
LIBS = -lpthread -lm -g #-lstdc++
EXENAME = lib_test
# Builds all object files and executable
${EXENAME} : $(OFILES)
$(CC) $(CFLAGS) -o ${EXENAME} $(OFILES) $(LIBS)
# Clean up
clean :
rm -f $(OFILES) ${EXENAME}
其中libavcodec_dll.so在当前的目录下.
最后出现这样的错误:是我的makefile写错了吗?
[root@localhost test]# make
gcc -Os -Wall -D_DEBUG -D_VERBOSE -I./ -g -o lib_test test.o libavcodec_dll -lpthread -lm -g
libavcodec_dll: undefined reference to `h261_demuxer'
libavcodec_dll: undefined reference to `vc1_demuxer'
libavcodec_dll: undefined reference to `m4v_demuxer'
libavcodec_dll: undefined reference to `aac_demuxer'
libavcodec_dll: undefined reference to `h263_demuxer'
libavcodec_dll: undefined reference to `rawvideo_demuxer'
libavcodec_dll: undefined reference to `mpegvideo_demuxer'
libavcodec_dll: undefined reference to `flac_demuxer'
libavcodec_dll: undefined reference to `ac3_demuxer'
libavcodec_dll: undefined reference to `h264_demuxer'
collect2: ld returned 1 exit status
make: *** [lib_test] Error 1
FILES = test.o
libavcodec_dll.so
# Compiler command name
#CC =/opt/arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc
CC = gcc
# Compiler flags applied to all files
CFLAGS = -Os -Wall -D_DEBUG -D_VERBOSE -I./ -g
#CFLAGS = -Os -wall -D_DEBUG -D_VERBOSE -I./ -g
LIBS = -lpthread -lm -g #-lstdc++
EXENAME = lib_test
# Builds all object files and executable
${EXENAME} : $(OFILES)
$(CC) $(CFLAGS) -o ${EXENAME} $(OFILES) $(LIBS)
# Clean up
clean :
rm -f $(OFILES) ${EXENAME}
其中libavcodec_dll.so在当前的目录下.
最后出现这样的错误:是我的makefile写错了吗?
[root@localhost test]# make
gcc -Os -Wall -D_DEBUG -D_VERBOSE -I./ -g -o lib_test test.o libavcodec_dll -lpthread -lm -g
libavcodec_dll: undefined reference to `h261_demuxer'
libavcodec_dll: undefined reference to `vc1_demuxer'
libavcodec_dll: undefined reference to `m4v_demuxer'
libavcodec_dll: undefined reference to `aac_demuxer'
libavcodec_dll: undefined reference to `h263_demuxer'
libavcodec_dll: undefined reference to `rawvideo_demuxer'
libavcodec_dll: undefined reference to `mpegvideo_demuxer'
libavcodec_dll: undefined reference to `flac_demuxer'
libavcodec_dll: undefined reference to `ac3_demuxer'
libavcodec_dll: undefined reference to `h264_demuxer'
collect2: ld returned 1 exit status
make: *** [lib_test] Error 1
|
gcc -Os -Wall -D_DEBUG -D_VERBOSE -I./ -g -o lib_test test.o -lavcodec_dll -lpthread -lm -g
然后把共享库放到系统的库目录中去。把libavcodec_dll.so放到/lib中去。
然后把共享库放到系统的库目录中去。把libavcodec_dll.so放到/lib中去。
|
加载库用-L 和-l.
-L指定库的目录
-l指定库的名称
-L指定库的目录
-l指定库的名称
|
加 -lavformat 试试
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。