编译过程中"undefined reference to"问题
2014-07-28 09:48
429 查看
ffmpeg编程开发中的编译问题(2010-10-23 18:55:34)
转载:http://blog.sina.com.cn/s/blog_5c4dd3330100mpdx.html
由于项目需要,刚开始学习ffmpeg编程开发,想先找个范例程序试试,于是就用源码包中的api-example.c文件编译了一下,编译过程主要遇到了两个问题,在网上查了一些解决方法,总算是搞定了。
1.如果直接用gcc api-example.c命令编译会出现以下错误信息:
/tmp/ccYIJH73.o: In function `main':
api-example.c:(.text+0xfd4): undefined reference to `avcodec_init'
api-example.c:(.text+0xfd9): undefined reference to `avcodec_register_all'
......
......
collect2: ld 返回 1
其原因是没有加载ffmpeg库,用如下命令就可解决些问题
gcc api-example.c -lavcodec -lavformat -lavutil
不过此时仍会报错:
/usr/local/src/ffmpeg-0.6.1/libavcodec/aacpsy.c:109: undefined reference to `pow'
......
/usr/local/src/ffmpeg-0.6.1/libavcodec/aacpsy.c:109: undefined reference to `exp'
......
/usr/local/src/ffmpeg-0.6.1/libavcodec/aacps_tablegen.h:160: undefined reference to `sincosf'
......
/usr/local/src/ffmpeg-0.6.1/libavcodec/aacps_tablegen.h:180: undefined reference to `sincos'
......
/usr/local/src/ffmpeg-0.6.1/libavcodec/lcldec.c:131: undefined reference to `inflateReset'
......
/usr/local/src/ffmpeg-0.6.1/libavcodec/lcldec.c:140: undefined reference to `inflate'
......
/usr/local/src/ffmpeg-0.6.1/libavcodec/pngenc.c:199: undefined reference to `crc32'
其中从pow, exp, sincosf, sincos可以看出是一些数学函数,需要链接数学函数链,即在编译选项中添加"-lm",而inflateReset, inflate, crc32等,网上查到说是要加载通用例程库,具体是什么还有待研究,可以用-lz选项加载这个库。
最后,能够成功进行编译的命令如下:
gcc api-example.c -lavcodec -lavformat -lavutil -lm -lz
转载:http://blog.sina.com.cn/s/blog_5c4dd3330100mpdx.html
由于项目需要,刚开始学习ffmpeg编程开发,想先找个范例程序试试,于是就用源码包中的api-example.c文件编译了一下,编译过程主要遇到了两个问题,在网上查了一些解决方法,总算是搞定了。
1.如果直接用gcc api-example.c命令编译会出现以下错误信息:
/tmp/ccYIJH73.o: In function `main':
api-example.c:(.text+0xfd4): undefined reference to `avcodec_init'
api-example.c:(.text+0xfd9): undefined reference to `avcodec_register_all'
......
......
collect2: ld 返回 1
其原因是没有加载ffmpeg库,用如下命令就可解决些问题
gcc api-example.c -lavcodec -lavformat -lavutil
不过此时仍会报错:
/usr/local/src/ffmpeg-0.6.1/libavcodec/aacpsy.c:109: undefined reference to `pow'
......
/usr/local/src/ffmpeg-0.6.1/libavcodec/aacpsy.c:109: undefined reference to `exp'
......
/usr/local/src/ffmpeg-0.6.1/libavcodec/aacps_tablegen.h:160: undefined reference to `sincosf'
......
/usr/local/src/ffmpeg-0.6.1/libavcodec/aacps_tablegen.h:180: undefined reference to `sincos'
......
/usr/local/src/ffmpeg-0.6.1/libavcodec/lcldec.c:131: undefined reference to `inflateReset'
......
/usr/local/src/ffmpeg-0.6.1/libavcodec/lcldec.c:140: undefined reference to `inflate'
......
/usr/local/src/ffmpeg-0.6.1/libavcodec/pngenc.c:199: undefined reference to `crc32'
其中从pow, exp, sincosf, sincos可以看出是一些数学函数,需要链接数学函数链,即在编译选项中添加"-lm",而inflateReset, inflate, crc32等,网上查到说是要加载通用例程库,具体是什么还有待研究,可以用-lz选项加载这个库。
最后,能够成功进行编译的命令如下:
gcc api-example.c -lavcodec -lavformat -lavutil -lm -lz
相关文章推荐
- Ubuntu11.20 32位linux下编译cppunit报 libcppunit.so: undefined reference to `dlsym'错误问题
- 编译:undefined reference to涉及的链接问题
- 线程编译问题(undefined reference to `pthread_create')
- gcc undefined reference to '__stack_chk_fail'【操作系统开发编译中遇到的问题】
- linux下开发,解决cocos2d-x中编译出现的一个小问题, undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
- 解决netbean7.1.2在Ubuntu下面编译程序报undefined reference to问题
- 编译错误----undefined reference to 'pthread_create'问题解决
- 线程库编译问题: undefined reference to 'pthread_create'的解决
- 编译问题:undefined reference to `MyInitBitMap'
- ubuntu下 GCC编译程序出现 undefined reference to `std::ios_base::Init::Init()'问题——gcc编译C++代码
- MySQL connector C++在Linux下编译undefined reference to 'get_driver_instance'问题
- ubuntu下 GCC编译程序出现 undefined reference to `std::ios_base::Init::Init()'问题
- apue 线程代码编译时的 undefined reference to 'pthread_create' 问题处理
- 【嵌入式Linux】[内核编译]:内核编译时出现的问题:undefined reference to `__gnu_mcount_nc'
- 用gcc编译.cpp文件可能出现"undefined reference to `__gxx_personality_v0'"问题的解决
- linux下生产者与消费者问题代码,以及编译c代码时error:undefined reference to sem_wait 解决方法之一
- Linux 编译报错 -- undefined reference to 问题解决方法 (具体'pthread_create'和opencv看文章最后两条)
- 用gcc编译.cpp文件可能出现"undefined reference to `__gxx_personality_v0'"问题的解决
- gcc编译出现 undefined reference to 的问题
- UNIX环境高级编程中的11章程序11-2编译问题---undefined reference to `pthread_create'