如何在 Windows 上编译它
Posted
技术标签:
【中文标题】如何在 Windows 上编译它【英文标题】:How to compile this on Windows 【发布时间】:2010-01-25 19:59:59 【问题描述】:好的。我正在尝试在 Windows 上编译以下应用程序(Segmenter,请参见步骤 3)。
我检查了源代码并更改了引用,这样一切都会好起来的。它基本上是一个单文件应用程序,引用了 ffmpeg。
makefile
写着:
gcc -Wall -g segmenter.c -o segmenter -lavformat -lavcodec -lavutil -lbz2 -lm -lz -lfaac -lmp3lame -lx264 -lfaad
我有 Visual C++ 编译器,但我不知道如何使用该编译器编译上述行,还是应该使用 Gcc for Windows?
【问题讨论】:
是的,抓住 gcc。您可以从 MingW 或 Cygwin 中进行选择 IMO,编译开源应用程序属于超级用户的土地。 关于在 SO 上使用 gcc 和相关工具的问题有数千个 - 我从未见过一个迁移到 SU。 @Neil:当然。 “我如何引用这些库”完全是一个 SO 问题,但编译带有指示如何编译的 README 文件的应用程序基本上是安装的事情。事实上,这是一个灰色地带。反正不是什么大问题。 【参考方案1】:该行表示一个非常简单的编译。它使用一个标准参数编译文件(-g 用于使用调试符号进行编译,在 MSVC 上是 /Zi)。
但它与很多库链接(这就是所有的 -l 选项)。我认为其中两个是标准压缩库(bz2 和 z),因此您需要先构建这些库。
【讨论】:
【参考方案2】:除非您正在处理的项目绝对需要它,否则不要考虑使用 cygwin。从http://tdragon.net/recentgcc 下载 MinGW 版本的 GCC 和 binutils,例如 make。我从未听说过您在问题中提供链接的 GCC 版本 - MinGW 是该领域的主流项目。
【讨论】:
【参考方案3】:除非您有要链接的库的源代码,否则您可能必须使用编译它们的编译器。
【讨论】:
【参考方案4】:cl -c -W4 segmenter.c -Fosegmenter.obj
link segmenter.obj avformat avcodec avutil bz2 faac mp3lame x264 faad
我不确定这与 -lm 和 -lz 有什么关系。 事实上,所有这些库都需要由 MSVC 编译器构建才能正常工作。
【讨论】:
【参考方案5】:你应该可以use cl.exe 你已经拥有了。您可以使用 /Wall 代替 -Wall 。 (W 控制如何生成警告。)
R Samuel Klatchko 提供了您应该知道的其余内容。
【讨论】:
以上是关于如何在 Windows 上编译它的主要内容,如果未能解决你的问题,请参考以下文章
如何准备代码库以在基于 Windows 和 Unix 的系统上进行编译