- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想使用 Ubuntu 16.04 从 github 构建 Facebook 的 Proxygen c++ http 库。这是我设置的环境以及用于安装依赖项的 deps.sh 命令:
gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.1) 5.4.0 20160609
export CPPFLAGS="-std=c++14"
export CXXFLAGS="-std=c++14"
git clone git@github.com:facebook/proxygen.git
cd proxygen/proxygen && ./deps.sh
这让我完成了构建其愚蠢依赖的大部分工作,但我遇到了一个不完整的类型错误:
libtool: compile: g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=c++14 -std=gnu++1y -std=c++14 -MT io/async/AsyncPipe.lo -MD -MP -MF io/async/.deps/AsyncPipe.Tpo -c io/async/AsyncPipe.cpp -fPIC -DPIC -o io/async/.libs/AsyncPipe.o
In file included from /usr/include/c++/5/bits/move.h:57:0,
from /usr/include/c++/5/bits/stl_pair.h:59,
from /usr/include/c++/5/utility:70,
from /usr/include/c++/5/algorithm:60,
from ./../folly/Conv.h:26,
from Conv.cpp:16:
/usr/include/c++/5/type_traits: In instantiation of ‘struct std::make_unsigned<__int128>’:
Conv.cpp:528:52: required from ‘folly::detail::ConversionResult<T> folly::detail::digits_to(const char*, const char*) [with Tgt = __int128]’
Conv.cpp:658:16: required from here
/usr/include/c++/5/type_traits:1757:62: error: invalid use of incomplete type ‘class std::__make_unsigned_selector<__int128, false, false>’
{ typedef typename __make_unsigned_selector<_Tp>::__type type; };
^
/usr/include/c++/5/type_traits:1721:11: note: declaration of ‘class std::__make_unsigned_selector<__int128, false, false>’
class __make_unsigned_selector;
^
/usr/include/c++/5/type_traits: In instantiation of ‘struct std::make_unsigned<__int128 unsigned>’:
Conv.cpp:528:52: required from ‘folly::detail::ConversionResult<T> folly::detail::digits_to(const char*, const char*) [with Tgt = __int128 unsigned]’
Conv.cpp:661:16: required from here
有没有人尝试过或解决过这个问题?我还不熟悉代码库。蒂亚。
最佳答案
TL;DR Proxygen 需要 GNU 扩展;使用 -std=gnu++11
或 -std=gnu++14
为什么在构建 proxygen 及其依赖项时需要覆盖 C++ 标准? Folly 本身指定了 -std=gnu++1y
。如果你删除
export CPPFLAGS="-std=c++14"
export CXXFLAGS="-std=c++14"
并尝试构建它,它几乎会,我必须做的唯一愚蠢的改变是 fix membarrier .
如果您坚持使用-std=c++14
,那么问题实际上并不愚蠢,而是在于 libstdc++ 对 GNU 扩展的处理,这一行简单:
typedef std::make_unsigned<__int128>::type int128_type;
使用 -std=gnu++11
或 -std=gnu++1y
可以轻松编译,但使用 -std=c 会失败++11
或 -std=c++14
。而且很难说它是一个错误(因为编译器提供了 __int128
类型(并且愚蠢地在它的配置脚本中检测到它,顺便说一句)但是 C++ 库有问题)还是一个特性(因为__int128
首先是一个扩展,应该使用标准的一些 GNU 变体来正确获取它)。
关于c++ - 在 Ubuntu 16.04 下构建 Proxygen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38806435/
您好,我正在使用 facebook 的 proxygen 创建一个简单的 hhtpclient。我正在尝试运行他们的默认 httpclient 示例。我正在使用以下命令来构建它: g++ -std=
我正在使用 proxygen 制作一个简单的网络服务器。我被限制使用 proxygen。我正在使用 proxygen 默认回显服务器示例我想在每次向服务器发送请求时打印 header 值。下面是我认为
我想使用 Ubuntu 16.04 从 github 构建 Facebook 的 Proxygen c++ http 库。这是我设置的环境以及用于安装依赖项的 deps.sh 命令: gcc --ve
我正在编写一个基于 Facebook 的 Proxygen 的 HTTP 视频流服务器。没有寻求计划。使用 proxygen::ResponseBuilder 我能够发送 webm 编码视频 bloc
我已经使用 jni4net proxygen 成功生成了从 Java 到 .NET 的代理。我现在尝试在 Visual Studio 2017 中创建 .NET 解决方案,并在 .NET 控制台程序中
我已成功获取 JNI4NET tool 的示例项目通过使用附带的 ProxyGen.exe 程序生成一些 Java 代理类来工作。 我现在正在尝试将这个工作示例转化为一个小测试。到目前为止我已经创建了
HHVM 有一个内置服务器 Proxygen。您可以使用 Proxygen 服务器运行 HHVM 或以 FastCGI 模式运行它,使用其他服务器(例如 nginx 或 apache)来处理 Web
我是一名优秀的程序员,十分优秀!