问题标签 [b2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用 bjam 编译的来自 C++ 的未定义符号
我有一个通过 Boost Python 与 C++ 交互的 Python 应用程序。应用程序的 C++ 部分是使用 Bjam 构建的(Bjam make 文件可以在问题的底部找到)。C++ 编译(并且似乎链接)很好。
Python 执行后不久,它会抱怨从 C++ 文件引用的未定义符号。此 C++ 文件包含一个 C++ 标头,其中声明了未定义的符号。如果我删除对有问题的变量的引用,代码将继续正常执行。
如果我nm
在库上运行,它会列出带有 U(未定义)的符号。
有人可以帮助我为什么收到这个未定义的符号运行时错误吗?我认为这可能是因为我的 gcc 路径中没有包含某些内容?
python 代码调用一个 C++ 方法,该方法使用以下定义的变量创建一个对象C_NAMESPACE
:
/dir/folder1/bridge.cpp
它位于头文件 ch 中:
/dir/folder2/ch
源文件如下所示:
/dir/folder2/c.cpp
我正在使用 bjam 构建这个 C++:
bjam - 访问 jam 配置文件中的环境变量
我正在尝试在 Linux 主机上使用 x86_64-w64-mingw32 编译器交叉编译 Boost python 库。我需要指定 python 库的路径并在我的 user-config.jam 文件中包含文件。我不想硬编码这条路径,而是想通过环境变量来读取它。
以下是我的 user-config.jam 文件的内容:
但是,上面的内容扩展为在编译器命令行中构建 boost python 模块期间使用的以下包含路径:
有人可以指导如何正确使用环境变量吗?
web-applications - 由于 Backblaze 账户只提供一个 B2 云存储应用密钥,您应该如何处理多个应用使用 B2?
来自 AWS S3 和 Google Cloud Storage 等服务,我习惯于为单个应用程序使用个人访问帐户(如 AWS 上的 IAM 和 Google Cloud 上的服务帐户)。我一直认为这是有道理的,当涉及到安全性并确保一个应用程序的云服务问题不会影响另一个应用程序时,这是一种很好的做法。
但是,Backblaze 只为每个帐户提供一个应用程序密钥。这是否意味着如果我们创建多个应用程序并且每个应用程序使用一个帐户,我们应该创建单独的 Backblaze 帐户?或者每个应用程序使用多个帐户来拥有用于测试、开发、生产等的唯一密钥?我很好奇是否有人对 B2 有任何经验并可以提供一些建议。
boost-build - 如何将 Jambase 文件包含到我的构建中?
我正在尝试设置一个简单的bjam构建示例,我SubDir
在顶级Jamroot.jam
文件中使用该规则:
我正在使用boost_1_58_0
,当我省略SubDir
指令时,构建工作正常。
但是当我尝试使用时SubDir
,bjam声称该规则是未知的......虽然我看到Jambase
文件被解析:
该Jambase
文件和一个 simpleJamrules
存在于我的玩具项目的顶层。当我省略“ -f Jambase
”选项时,bjam会选择内部 Jambase 定义 (+),但会产生相同的结果……SubDir
未知。
当我使用选项“ ”启动bjam-d 12
时,我看到SubDir
来自 的规则Jambase
被正确扫描,但不知何故,它没有正确绑定、定义或bjam通常为使方法/规则“可用”所做的任何事情。正如您可能从使用的路径中看到的那样,我只是引导b2
,所以boost
还没有正确安装。为了调试,我还稍微修补了它的来源,这就是“ Parsing file...
”消息的来源。
如何正确“注入”文件中的规则定义,以便在解析sJambase
时知道它们?Jamfile
boost - 如何将带有多参数的 cxxflag 传递给 boost.b2
我想通过c++14
并-fPIC
通过 boost.b2 和构建静态库。使用 :cxxflags="--std=c++14 -fPIC"
并出现以下错误:
"
如果像这样删除./b2 cxxflags=--std=c++14 -fPIC link=static install
,会出现以下错误:
最后,我像这样解决它:
如果需要两个以上的参数,现在没办法了。
pre-signed-url - 使用“presigned URL”下载 Backblaze B2
情况:我在网络上运行一个 Django 应用程序,登录用户也可以在其中下载 .pdf 文件(非公开,有特定限制,取决于用户权限)。最方便的方法(例如在 S3 中)是使用有时间限制的预签名 URL,因为它们会立即在浏览器中打开,而且应用服务器不必处理额外的流量。
问题:Backblaze B2 显然没有提供一个明确的方法来创建预签名 URL 以直接在浏览器中下载非公共文件。生成 api URL 和授权令牌,并从对象存储中获取文件发生在应用服务器级别,并且该过程不会暴露给“普通”用户。
但最后,API 操作“b2_download_file_by_name”只使用了一个 GET 请求,这意味着我可以使用“?Authorization=123xyz........”将授权令牌添加到请求的 URL 中。通过这种方式,我获得了一个在浏览器中运行良好的预签名 URL,以允许在有限的时间内访问特定的非公共文件。(请注意:B2 下载可以限制为具有特定前缀的文件 [如 s3 伪文件夹],但如果指定的“前缀”足够长,我可以使身份验证令牌特定于一个文件。)
问题:正如我上面写的,通常授权令牌不会暴露给用户。现在,如果我让 URL 可见,这是否意味着安全风险?换句话说,拥有一个或多个令牌的用户是否可以从令牌中提取通用访问密钥,或者令牌是否加密得足以避免这种情况?
boost - 提升树外构建
Boost 仍然使用它自己的疯狂构建系统,称为b2
. 由于没有其他人使用它,因此它们包含一个要b2
在您构建 Boost 本身之前构建的脚本:./bootstrap.sh
.
如果你从另一个目录运行它,它会b2
在其他地方构建,但不知何故你仍然会得到一些二进制文件
有什么办法可以得到一个完全干净的 Boost 版本?
node.js - 如何使用nodejs的backblaze-b2获取backblaze.com的b2存储目录中所有文件的大小
文档可在此处获得,但令人震惊的是没有 api 来获取与du
命令在 linux 中相同的目录大小。
https://www.backblaze.com/b2/docs
这有用于文件的 api,但没有用于目录大小 - https://www.backblaze.com/b2/docs/files.html
我们从上面得到这个结果 -
c++ - 如何构建 libboost_thread_vc100-mt-1_62.lib?
我正在执行以下操作,但仍然无法获取 libboost_thread_vc100-mt-1_62.lib (多线程库)。
上面构建了 dll,但 lib 文件被命名为“boost_thread-vc100-mt-1_62.lib”。
这将构建名称为 (libboost_thread-vc100-mt-s-1_62.lib) 的静态库
我正在寻找 libboost_thread-vc100-mt-1_62.lib。如何构建相同的?
c++ - 使用 icu 64.2 构建 Boost 1.70.0
我已经构建了 icu 64.2(x86 和 x64 的调试和发布)。我的构建通过了所有测试,所以我知道 icu 不是问题。
我还使用以下 b2 构建命令构建了 64 位版本的 boost 1.70.0:
b2 正在检测我的 icu 版本并显示:- has_icu 版本:是
当我尝试使用此 boost/regex/icu 代码构建我的项目时:
我收到以下错误:
我还应该注意,我使用相同的编译器和 MSVC 工具集构建了 icu 和 boost。任何想法为什么boost不会链接到icu?