首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libc++不能处理fcgi

libc++不能处理fcgi
EN

Stack Overflow用户
提问于 2013-09-01 15:03:44
回答 1查看 1.4K关注 0票数 1

我想用C++11写一个使用fcgi和nginx的网站。目前,只有Clang++与libc++相结合才能完全支持C++11。

但是当我运行我的fcgi程序时,当有人通过浏览器请求页面时,我会遇到一个seg错误:似乎libc++不喜欢fcgi使用流的方式。

测试代码:

代码语言:javascript
复制
#include <iostream>
#include <sstream>

#include "fcgio.h"


int main() {
    int count = 0;

    FCGX_Request request;

    FCGX_Init();
    FCGX_InitRequest(&request, 0, 0);

    while(FCGX_Accept_r(&request) == 0) {
        fcgi_streambuf cout_fcgi_streambuf(request.out);

        std::ostream fout(&cout_fcgi_streambuf);

        fout << "Content-type: text/html\r\n" <<
               "\r\n" <<
               "<title>CGI Hello!</title>" <<
               "<h1>CGI Hello!</h1>" <<
               "Request number" << ++count << "\n" << std::endl;
    }

    return 0;
}

上述代码是根据以下内容编写的:

代码语言:javascript
复制
clang++ -stdlib=libc++ -o index index.cpp -lfcgi++ -lfcgi -std=c++11 -g

全球开发银行的产出如下:

代码语言:javascript
复制
Program received signal SIGSEGV, Segmentation fault.
0x0000000000402bd9 in sputc (this=0x7fffffffe4d0, __c1=0, __c=10 '\n', __c2=4210300) at /usr/include/c++/v1/streambuf:351
351     *__nout_++ = __c;

如果我不使用-stdlib=libc++编译它,那么一切都可以正常工作,但我不能使用一些c++11特性…

有什么方法我可以运行我的fcgi-应用程序而不崩溃和使用libc++?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-17 00:10:38

我在使用相同的工具时遇到了同样的问题。

正如Dietmarühl所指出的,libfcgi++不是用libc++编译的,这是我的问题所在。+1000给他。非常感谢。

作为一个快速的恶意测试,我用标志重新编译了最新的稳定的libfcgi:

代码语言:javascript
复制
-stdlib=libc++

通过像往常一样运行./configure,然后在fcgi-dev-kit/libfcgi/Makefile中找到的Makefile中编辑两行

代码语言:javascript
复制
CXX = clang++
# ....
CXXFLAGS = -g -O2 -std=c++0x -stdlib=libc++

然后在顶层目录中运行make

例如,与fcgi-dev-kit/libfcgi/..libs/libfcgi++.a中的结果库链接,修复了分段错误。

可以在这里找到开发工具包:http://www.fastcgi.com/drupal/node/5。如果您需要像我一样使用libfcgi++,您将需要找到一个与适当编译的libc++链接的长期解决方案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18559678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档