如何在 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 上编译 nDPI 库?

如何准备代码库以在基于 Windows 和 Unix 的系统上进行编译

在 iOS 设备上运行时,如何允许我的 Kivy 应用程序访问文本文件?

从windows到linux的file.cpp [关闭]

如何多次继承同一个类?

如何在 Visual Studio 中启用 C++0x 功能? [初始化列表支持]