如何在 Cygwin 和 MinGW 中判断 C++ 库路径

2022-01-17 00:00:00 cygwin compiler-construction mingw c++

我在 Windows XP 上使用 Cygwin 安装开发 C++ 程序.

I develop C++ programs using a Cygwin installation on top of Windows XP.

我也安装了 MinGW,因为我想使用它的 g++ 版本,而不是 Cygwin 自带的那个.

I also have MinGW installed, because I want to use it's version of g++, not the one that comes with Cygwin.

这部分似乎设置正确.当我开始 Cygwin 会话时,我看到:

That part seems to be set up correctly. When I start a Cygwin session I see this:

$哪个g++
/cygdrive/c/MinGW/bin/g++

$ which g++
/cygdrive/c/MinGW/bin/g++

这是正确的,g++ 指向我的 MinGW 安装.

This is correct, g++ is pointing to my MinGW install.

我不明白的是,当我编写包含库代码的代码时(例如,来自 `Winsock/BerkleySockets API 的头文件),我如何知道编译器在哪里找到该头文件?

What I don't understand is when I write code that includes library code (for example, header files from the `Winsock/BerkleySockets API), how can I tell where the compiler is finding that header file?

例如,如果我的代码中有 #include "winsock.h",那么编译器在哪里找到那个头文件?

For example, if I have #include "winsock.h" in my code, where does the compiler find that header file?

如果我在我的计算机上对 winsock.h 进行一般搜索,我会得到:

If I do a general search for winsock.h on my computer, I get this:

C:MinGWinclude
C:cygwinusrincludew32api

C:MinGWinclude
C:cygwinusrincludew32api

两者都有一个 winsock.h 的副本(尽管它们的文件大小并不完全相同,因此它们不可能完全相同).

Both have a copy of winsock.h (though the file sizes of these aren't exactly the same, so they can't be identical).

感谢您的帮助.

我还应该指出,我的 Windows PATH 环境变量中有 C:MinGWin,以及在我的/etc/profile 文件中配置的相同路径 在 Cygwin 中.

I should also point out, I have the C:MinGWin in my Windows PATH Environment Variable, as well as that same path configured in my/etc/profile file within Cygwin.

推荐答案

我猜为 MingW 编译的 g++ 具有与标准 g++ 相同的命令行参数.查看 g++ 手册页.

I'm guessing the g++ compiled for MingW has the same command line arguments as the standard g++. Check out the g++ manual page.

要将包含路径添加到您的编译中,请使用 -I 标志.

To add include paths to your compilation, use the -I flag.

g++ -I/include/path/here -I/another/include/path -o prog src.cpp

要将库路径添加到您的链接,请使用 -L 标志.

To add library paths to your linking, use the -L flag.

g++ -L/lib/path/here -L/another/lib/path -o prog src.cpp

MingW 站点解释了包含文件搜索如何在 MingW 上工作,以及如何修改它.

The MingW site explains how the include file search works on MingW, and how to modify it.

该网站还说,如果您想在编译期间查看包含文件搜索,请将 verbose 标志 (-v) 传递给编译器.

The site also says that if you want to view the include file search while it happens during the compilation, pass the verbose flag (-v) to the compiler.

g++ -v -o prog src.cpp

相关文章