在 multipass 中使用 g++ 无法 link fcgi 库

Failing to link fcgi library with g++ in multipass

我的代码:

#include <fcgi_stdio.h>

int main() {
    int count = 0;
    while(FCGI_Accept() >= 0) {
        printf("Content-type: text/html\r\n");
        printf("\r\n");
        printf("Hello world!<br>\r\n");
        printf("Request number %d.", count++);
    }
}

在新的 multipass 实例中,我将 gccg++libfcfgi-dev 安装为

sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install libfgci-dev

但是尝试使用 g++ -std=c++17 -lfgci++ -lfcgi main.cpp -o main 编译代码会给出错误

in function main: undefined reference to `FCGX_Init` ...

但是当我尝试在 gcc:latest docker 容器中编译时,这并没有发生。 docker文件是

FROM gcc:latest
RUN apt-get update -yqq;
    apt-get install -yqq libfcgi-dev
COPY ./main.cpp /home/main.cpp
CMD g++ -std=c++17 /home/main.cpp -lfcgi++ -lfcgi -o /home/main

我在多通道实例中缺少什么?

The order matters: libraries follow input files

就像评论里说的,确实是这样。我不知道,我完全错过了它在 dockerfile 中的正确顺序。这确实是一件非常简单的事情,但感谢 S.M 指出愚蠢错误的快速反应。希望这也能帮助其他一些在未来遇到这个问题的新手。