在 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 实例中,我将 gcc
、g++
和 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 指出愚蠢错误的快速反应。希望这也能帮助其他一些在未来遇到这个问题的新手。
我的代码:
#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 实例中,我将 gcc
、g++
和 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 指出愚蠢错误的快速反应。希望这也能帮助其他一些在未来遇到这个问题的新手。