Cygwin g ++是如何解决它的?

问题描述 投票:1回答:2

我很困惑,仅仅是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++中指定那些include和library路径,它是如何编译和生成exe的呢?我检查了g++ -v的输出,没有看到任何到Poco的路线。

g++ cygwin poco
2个回答
2
投票

编译器具有包含文件和库的默认搜索路径。 (实际上后者适用于链接器,而不适用于编译器,但g++命令同时调用它们。)

/usr/include/usr/lib在这些默认搜索路径中。

你指定了#include <Poco/File.h>,所以编译器找到了/usr/include/Poco/File.h

您指定了-lPocoFoundation,因此链接器找到了/usr/lib/libPocoFoundation.dll.a,该文件包含在Cygwin下实现PocoFoundation库的代码。


1
投票

我检查了g++ -v的输出,没有看到任何到Poco的路线

命令g++ -v将打印出一些关于GCC的版本信息,以及它是如何配置的。将-v选项添加到用于编译和/或链接的实际命令中将显示标题和库的搜索路径。

换句话说,你应该尝试:而不仅仅是g++ -v

g++ -o testpoco testpoco.cpp -lPocoFoundation -v

这将显示Keith Thompson在他的回答中提到的搜索路径。

© www.soinside.com 2019 - 2024. All rights reserved.