>У меня тоже не получается откомпилировать:
>/tmp/.private/vic/ccV0qRQb.o: In function `main':
>polynomial.cpp:(.text+0x37a): undefined reference to `FCGI_Accept'
>collect2: выполнение ld завершилось с кодом возврата 1
>
>Компилирую так:
>g++ -o ../cgi-bin/polynomial -I. -L/usr/lib -lfcgi++ polynomial.cpp
>1. Установлено в /usr/local или /usr ? Если в /usr/local то вместо -L/usr/lib должно быть -L/usr/local/lib
2. Флаг компилятора -Wall д.б. в обязательном порядке использоваться.
3. Сразу вопрос про язык, С или С++ ? см ниже.
>#include <fcgi_stdio.h>
>#include <cstdlib>
>#include <iostream>
>#include <table.h>
>#include <variants.h>
>using namespace std;
1. плохой стиль ведет к конфликтам не используйте using namespace глобально. Используйте префиксы std:: для элементов из namespace.
2. половина include явно либо лишние, либо неправильные.
>int main() {
> char charset[]="iso-8859-1";
1. const char* charset = "iso-8859-1"; // это ж константа в вашем примере, а не изменяемый массив.
2. const std::string charset("iso-8859-1"); // мы же на с++ пишем?
> int count=0;
>
> while (FCGI_Accept() >= 0) {
Это С-ные, а не С++ функции т.е. необходимо использовать -lfcgi вместо -lfcgi++
Если все же хотим C++ смотрите .h файл и доку на предмет c++ объектов из fcgi++.
> printf("Content-type: text/html; charset=%s\r\n"
> "\r\n"
> "<title>FastCGI Hello! (C, fcgi_stdio library)</title>"
> "<h1>FastCGI Hello! (C, fcgi_stdio library)</h1>"
> "Request number %d running on host <i>%s</i>\n",
> charset, ++count, getenv("SERVER_HOSTNAME"));
1. Неопределенное поведение при возврате NULL из функции getenv("SERVER_HOSTNAME"). На некоторых осях, printf с NULL упадет в coredump.
2. printf - это С, а не С++. В С++ используются потоки.