尝试构建 ffmpeg 源代码以制作独立库时出现链接错误
我正在尝试使用 gcc 版本 4.4.3 在 ubuntu 10.1 linux 机器上构建 ffmpeg 源代码。
我有兴趣使 ffmpeg.c 中的 av_transcode() 函数可用”,所以我注释掉了 ffmpeg.c 的主要函数。
gcc $(LD_LIBRARY_PATHS) -Wl,-Bsymbolic -Wl,-E -o ffmpeg_g ffmpeg.o cmdutils.o -lavdevice -lavformat -lavcodec -lswscale -lavutil -lz -pthread -lm -lx264 -lm -lasound -lasound -lasound -ldl
我遇到以下链接错误
+++++++++++++ ++++++++++++++++++++++++++++++++++++++ /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o:在函数 _start' 中: (.text+0x20):未定义对 main' 的引用 Collect2: ld 返回 1 退出状态 make: * [ffmpeg_g] 错误 1 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
在我的 MacOS(雪豹)上也观察到相同的行为。
所以简而言之,我如何告诉 gcc 编译器我正在构建这个源代码来创建库?
I am trying to build ffmpeg source code on ubuntu 10.1 linux machine with gcc version 4.4.3.
I am interested in making av_transcode() function in ffmpeg.c available", So I have commented out the main function of ffmpeg.c.
gcc $(LD_LIBRARY_PATHS) -Wl,-Bsymbolic -Wl,-E -o ffmpeg_g ffmpeg.o cmdutils.o -lavdevice -lavformat -lavcodec -lswscale -lavutil -lz -pthread -lm -lx264 -lm -lasound -lasound -lasound -ldl
I am getting below linking errors
+++++++++++++++++++++++++++++++++++++++++++++++++
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o: In function _start':
main'
(.text+0x20): undefined reference to
collect2: ld returned 1 exit status
make: * [ffmpeg_g] Error 1
++++++++++++++++++++++++++++++++++++++++++++++++++
The same behavior is observed On my MacOS (snow leopard) as well.
SO putting the question short, How can I tell gcc compiler that I am building this source code to make library?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
gcc -shared
如果您尝试构建共享库,否则只需使用ar
将已编译的对象捆绑在一起。但你真的应该去阅读如何编写共享库 (PDF) 和许多其他文档,以便您了解为什么上面的方法有时会在没有
-fPIC
等的情况下失败。gcc -shared
if you're trying to build a shared library, otherwise just usear
to bundle the compiled objects together.But you really should go read How To Write Shared Libraries (PDF) and lots of other documentation, so that you understand why the above will sometimes fail without
-fPIC
and so on.