用C++编写的构建软件在康达环境中
我是生物信息学家,并使用大型遗传数据集。我们使用特定的文件格式(。bgen )用于有效存储这些数据,但是(据我所知)只有一个可以操纵这些文件的软件: qctool v2 。
我们的计算集群具有该软件的旧版本(V1无法处理.bgen格式的新规格),并且管理员将不会安装较新版本。该软件预编译的二进制文件无法访问所需的Boost库,因此也不是一种选择。由于我没有根访问权限,因此我仅限于在Conda环境中安装。
该软件包含大多数依赖项,但是试图在没有CONDA环境的情况下编译软件会陷入集群C ++编译器的问题。我认为编译器是问题,所以我创建了一个conda环境并安装了 gcc ,添加了conda gcc二进制为ld_library_path
,并试图编译qctool,但在编译过程中遇到了完全相同的错误。
它运行到的错误是:
../../metro/src/regression/Design.cpp: In member function ‘std::string metro::regression::Design::get_summary() const’:
../../metro/src/regression/Design.cpp:239:41: error: ‘defaultfloat’ is not a member of ‘std’
out << std::setw( widths[j+1] ) << std::defaultfloat << std::setprecision(3) ;
和谷歌搜索显示此8年旧的堆栈溢出问题。由此,以及有关签名和未签名整数表达式
之间的众多编译器警告,我仍然认为编译器可能是问题所在。
由于我对C ++没有太多的经验,而且我仅限于Conda环境,所以我不知道接下来应该尝试什么。我在这里要求该软件,尽管相当重要,但并没有得到很好的支持(尽管我理解原因),并且更新/bugfix是很不常见的。鉴于我对C ++的了解有限,我希望避免直接编辑代码,但是如果这是解决此问题的最佳方法,则可以这样做。
任何帮助或建议,无论多么基础,都将不胜感激。谢谢!
I am a bioinformatician and work with large genetic datasets. We work with a particular file format (.bgen) for efficiently storing this data, but there is (to my knowledge) only one piece of software that can manipulating these files: QCTOOL v2.
Our computing cluster has an old version of the software (v1 which cannot handle newer specs of the .bgen format) and the administrators will not install the newer version. The pre-compiled binaries for the software do not have access to the required boost libraries, so they are also not an option. Since I don't have root access, I am limited to installing within a conda environment.
The software comes packaged with most of its dependencies, but attempting to compile the software without conda environment runs into issues with the cluster's c++ compiler. I thought that the compiler was the issue, so I created a conda environment and installed GCC, added the conda gcc binary to LD_LIBRARY_PATH
and tried to compile QCTOOL, but hit exactly the same error during compilation.
The error that it runs in to is:
../../metro/src/regression/Design.cpp: In member function ‘std::string metro::regression::Design::get_summary() const’:
../../metro/src/regression/Design.cpp:239:41: error: ‘defaultfloat’ is not a member of ‘std’
out << std::setw( widths[j+1] ) << std::defaultfloat << std::setprecision(3) ;
and googling reveals this 8-year old stack overflow question. From this, and the numerous compiler warnings about comparison between signed and unsigned integer expressions
, I still think the compiler may be the problem.
As I don't have much experience of c++ and I'm limited to conda environments, I don't know what I should try next. I'm asking here as the software, despite being fairly critical, is not well-supported (though I understand the reasons) and updated/bugfixes are infrequent. Given my limited knowledge of c++, I was hoping to avoid editing the code directly but can do so if that's the best way to fix this.
Any help or advice, no matter how basic, would be hugely appreciated. Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论