Cygwin g++ 是如何解决的?
How did Cygwin g++ resolve it?
我很困惑,仅仅 g++ -o testpoco testpoco.cpp -lPocoFoundation
是如何在我的 Cygwin
环境中成功编译的。完整的C++代码如下:
#include <Poco/File.h>
int main (int argc, char *argv[])
{
Poco::File f("/tmp/test.log");
if (f.exists()) {
return 1;
}
return 0;
}
我安装了 cygwin Poco 开发头文件和库,并验证它们位于:
- /usr/include/Poco/(头文件)
- /usr/lib/(图书馆)
但是在g++
中没有指定那些包含和库路径,它是如何编译和生成exe的?我检查了 g++ -v
的输出,没有看到任何到 Poco
的路由。
编译器具有包含文件和库的默认搜索路径。 (实际上后者适用于链接器,而不是编译器,但是 g++
命令会调用两者。)
/usr/include
和 /usr/lib
在这些默认搜索路径中。
您指定了 #include <Poco/File.h>
,因此编译器找到了 /usr/include/Poco/File.h
。
您指定了 -lPocoFoundation
,因此链接器找到 /usr/lib/libPocoFoundation.dll.a
,该文件包含在 Cygwin 下实现 PocoFoundation 库的代码。
I checked the output of g++ -v
and did not see any routes to Poco
命令g++ -v
只会打印出一些关于GCC的版本信息,以及它是如何配置的。将 -v
选项添加到用于编译 and/or 链接的真实命令将显示 headers 和库的搜索路径。
换句话说,除了 g++ -v
你应该尝试:
g++ -o testpoco testpoco.cpp -lPocoFoundation -v
这将显示 Keith Thompson 在他的回答中提到的搜索路径。
我很困惑,仅仅 g++ -o testpoco testpoco.cpp -lPocoFoundation
是如何在我的 Cygwin
环境中成功编译的。完整的C++代码如下:
#include <Poco/File.h>
int main (int argc, char *argv[])
{
Poco::File f("/tmp/test.log");
if (f.exists()) {
return 1;
}
return 0;
}
我安装了 cygwin Poco 开发头文件和库,并验证它们位于:
- /usr/include/Poco/(头文件)
- /usr/lib/(图书馆)
但是在g++
中没有指定那些包含和库路径,它是如何编译和生成exe的?我检查了 g++ -v
的输出,没有看到任何到 Poco
的路由。
编译器具有包含文件和库的默认搜索路径。 (实际上后者适用于链接器,而不是编译器,但是 g++
命令会调用两者。)
/usr/include
和 /usr/lib
在这些默认搜索路径中。
您指定了 #include <Poco/File.h>
,因此编译器找到了 /usr/include/Poco/File.h
。
您指定了 -lPocoFoundation
,因此链接器找到 /usr/lib/libPocoFoundation.dll.a
,该文件包含在 Cygwin 下实现 PocoFoundation 库的代码。
I checked the output of
g++ -v
and did not see any routes to Poco
命令g++ -v
只会打印出一些关于GCC的版本信息,以及它是如何配置的。将 -v
选项添加到用于编译 and/or 链接的真实命令将显示 headers 和库的搜索路径。
换句话说,除了 g++ -v
你应该尝试:
g++ -o testpoco testpoco.cpp -lPocoFoundation -v
这将显示 Keith Thompson 在他的回答中提到的搜索路径。