我正在尝试安装多个版本的 g++ 编译器以进行测试。
我想能够安装g++ 4.9.3,5.1.0,5.2.0,和6.1.0。
我知道我能做到
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y;
sudo apt-get update -qq
sudo apt-get install g++-4.9, g++5.1, g++5.2, g++6
Run Code Online (Sandbox Code Playgroud)
但是在我的测试中,它们最终都使用了系统安装的标准库,即g++-4-series 标准库。我可以说是因为当我编译代码时,标准库并没有做一些 C++11 标准说它应该做的事情,例如,std::string移动构造函数没有被标记为noexcept。但是在具有 gcc-6 标准库的 ubuntu-xenial 上,它是,并且其他相关问题已解决。
我可以看到libstdc++-4.8-dev在 ubuntu 存储库中有例如命名的包,但是当我安装较新的编译器时,它们似乎没有使用它们。
我也知道我可以在我的主目录中从源代码安装编译器,但是构建它们需要很长时间,travis-ci不幸的是我无法在其中完成。在 travis-ci 中,所有构建都会在一小时后超时。
有没有一种简单的方法可以配置从 ppa 安装的编译器以使用正确版本的 C++ 标准库,即它们发布的版本而不是系统默认版本?
有没有一种简单的方法可以使用不涉及从源代码构建的 apt-get 将编译器二进制文件及其所有关联的库安装到我的主目录中的文件夹中?
我找到了这些说明,上面说我可以使用-rpath标志或规格文件,或者调整LD_LIBRARY_PATH,但我不确定我应该设置哪些路径。另一个问题是,它不仅仅是动态链接器,ubuntu-toolchain-r/test编译器似乎libstdc++也在使用系统头文件,所以我需要以某种方式纠正它。
我目前的策略是,只下载源代码发布 tarball 并尝试摆弄配置标志,直到我能找到一种在 < 60 分钟内构建它的方法。一旦我让它构建一次,它就在我的“缓存”目录中,所以我项目的未来构建可以在 < 1 …
我正在尝试让 caffe 运行,以便我可以通过 python 使用它。为此,我遵循了本教程。我在 Ubuntu 16.04 上。
当我到达时,make runtest我收到错误:
$ make runtest
CXX/LD -o .build_release/test/test_all.testbin src/caffe/test/test_caffe_main.cpp
.build_release/src/caffe/test/test_memory_data_layer.o: In function `caffe::MemoryDataLayerTest_AddMatVectorDefaultTransform_Test<caffe::CPUDevice<float> >::TestBody()':
test_memory_data_layer.cpp:(.text._ZN5caffe53MemoryDataLayerTest_AddMatVectorDefaultTransform_TestINS_9CPUDeviceIfEEE8TestBodyEv[_ZN5caffe53MemoryDataLayerTest_AddMatVectorDefaultTransform_TestINS_9CPUDeviceIfEEE8TestBodyEv]+0x333): undefined reference to `vtable for cv::_InputArray'
test_memory_data_layer.cpp:(.text._ZN5caffe53MemoryDataLayerTest_AddMatVectorDefaultTransform_TestINS_9CPUDeviceIfEEE8TestBodyEv[_ZN5caffe53MemoryDataLayerTest_AddMatVectorDefaultTransform_TestINS_9CPUDeviceIfEEE8TestBodyEv]+0x3f5): undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
test_memory_data_layer.cpp:(.text._ZN5caffe53MemoryDataLayerTest_AddMatVectorDefaultTransform_TestINS_9CPUDeviceIfEEE8TestBodyEv[_ZN5caffe53MemoryDataLayerTest_AddMatVectorDefaultTransform_TestINS_9CPUDeviceIfEEE8TestBodyEv]+0x407): undefined reference to `cv::randu(cv::_OutputArray const&, cv::_InputArray const&, cv::_InputArray const&)'
.build_release/src/caffe/test/test_memory_data_layer.o: In function `caffe::MemoryDataLayerTest_AddMatVectorDefaultTransform_Test<caffe::GPUDevice<float> >::TestBody()':
test_memory_data_layer.cpp:(.text._ZN5caffe53MemoryDataLayerTest_AddMatVectorDefaultTransform_TestINS_9GPUDeviceIfEEE8TestBodyEv[_ZN5caffe53MemoryDataLayerTest_AddMatVectorDefaultTransform_TestINS_9GPUDeviceIfEEE8TestBodyEv]+0x333): undefined reference to `vtable for cv::_InputArray'
test_memory_data_layer.cpp:(.text._ZN5caffe53MemoryDataLayerTest_AddMatVectorDefaultTransform_TestINS_9GPUDeviceIfEEE8TestBodyEv[_ZN5caffe53MemoryDataLayerTest_AddMatVectorDefaultTransform_TestINS_9GPUDeviceIfEEE8TestBodyEv]+0x3f5): undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
test_memory_data_layer.cpp:(.text._ZN5caffe53MemoryDataLayerTest_AddMatVectorDefaultTransform_TestINS_9GPUDeviceIfEEE8TestBodyEv[_ZN5caffe53MemoryDataLayerTest_AddMatVectorDefaultTransform_TestINS_9GPUDeviceIfEEE8TestBodyEv]+0x407): undefined reference to `cv::randu(cv::_OutputArray const&, cv::_InputArray const&, cv::_InputArray const&)'
.build_release/src/caffe/test/test_memory_data_layer.o: In function `caffe::MemoryDataLayerTest_TestSetBatchSize_Test<caffe::CPUDevice<float> >::TestBody()': …Run Code Online (Sandbox Code Playgroud) 以下是我的第一个多线程程序。但是在编译时,出现了链接错误。错误信息的部分:
std::thread::thread<void (&)(int), int&>(void (&)(int), int&):
test.cpp (.text._ZNSt6threadC2IRFviEJRiEEEOT_DpOT0_[_ZNSt6threadC5IRFviEJRiEEEOT_DpOT0_]+0x33): undefined reference pthread_create
collect2: error ld return 1
Run Code Online (Sandbox Code Playgroud)
#include<thread>
void f(int i) {}
int main() {
std::thread t(f, 1);
t.join();
return 0;
}
Run Code Online (Sandbox Code Playgroud) 试图建立一个需要提升的项目。我收到以下错误:
Unable to find the requested Boost libraries.
Boost version: 1.58.0
Boost include path: /usr/include
Could not find the following Boost libraries:
boost_thread
boost_locale
Some (but not all) of the required Boost libraries were found. You may
need to install these additional Boost libraries. Alternatively, set
BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT
to the location of Boost.
Run Code Online (Sandbox Code Playgroud)
如果我跑
sudo apt-get install libboost-all-dev
Run Code Online (Sandbox Code Playgroud)
我得到
libboost-all-dev is already the newest version (1.58.0.1ubuntu1).
Run Code Online (Sandbox Code Playgroud)
所以我不知道在这里做什么。如何安装这些特定的 boost 包,或者重新安装整个 boost 包?
编辑:另外,如果我运行 apt-get …
对于交付,我被建议将程序的完整输出打印到 txt 文件。此外,我需要使用我在执行脚本中实现的命令“time”来打印执行时间。
#!/bin/bash
time ./blur-effect 4k.png 4k_out16.png 16 15 &>> Output.txt
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是程序输出正确输出到 txt 文件,但执行时间显示在终端中,但它也必须打印在 txt 文件中。
所以我目前正在研究汇编语言,我在终端上遇到了这个很棒的命令,gcc -S filename.cpp,它生成 C++ 源文件的汇编代码。
但是在我安装 NASM 并尝试链接和编译 .S 文件后(我也尝试通过复制粘贴 .s 文件中的代码来使用 .asm),我最终只在终端中遇到了错误。
我确信 C++ 源文件中没有错误,因为它只是一个 hello world 程序,但我知道我遗漏了一些东西,我希望有人可以为我指出。
这是C++源代码:
#include <iostream>
using namespace std;
int main ()
{
cout<<"wtf";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是 .s 文件代码:
.file "try1.cpp"
.text
.section .rodata
.type _ZStL19piecewise_construct, @object
.size _ZStL19piecewise_construct, 1
_ZStL19piecewise_construct:
.zero 1
.local _ZStL8__ioinit
.comm _ZStL8__ioinit,1,1
.LC0:
.string "wtf"
.text
.globl main
.type main, @function
main:
.LFB1493:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6 …Run Code Online (Sandbox Code Playgroud) 在 Windows(C++ IDE)上使用 CLion,我想在通过 WSL 运行的 Ubuntu 18.04.3 LTS 上安装最新版本的 cmake(当前版本的 CLion 需要 cmake > 3.15,而我只安装了 3.10.2 版) )。
按照相关答案中的cmake 安装说明,引导 CMake 时发生错误(链接答案中 A-3 中的第一步):
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY) (found version "1.1.1")
CMake Error at Utilities/cmcurl/CMakeLists.txt:454 (message):
Could not find OpenSSL. Install an OpenSSL development package or
configure CMake with -DCMAKE_USE_OPENSSL=OFF to build without OpenSSL.
-- Configuring incomplete, errors …Run Code Online (Sandbox Code Playgroud) 我是一个新的 C++ 用户,在我的程序中安装外部库时遇到了一些问题。目前,我正在尝试安装fmt库。我下载了存储库内容并将其解压缩。然后我将 de 子目录添加fmt到usr/include/fmt,这不起作用。我也试过 add fmtto usr/local/include,也没有成功。这是一个示例代码和返回的相应错误:
#include <iostream>
#include <string>
#include <format.h> // I also tried include <fmt/format.h>
using namespace std;
int main(){
string s = fmt::format("{0}{1}{0}", "abra", "cad");
cout<< s<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误:
stack.cpp:3:10: fatal error: format.h: No such file or directory
#include <format.h>
^~~~~~~~~~
compilation terminated
Run Code Online (Sandbox Code Playgroud)
我注意到,在fmt我用来将其传输到以下命令后,该文件夹已“关闭”(标有“X”)usr/~:
cp fmt-master/include/fmt usr/local/include/fmt
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下方法更改文件夹权限:
sudo chmod -rwx usr/local/include/fmt
Run Code Online (Sandbox Code Playgroud)
但即使这样也行不通。该命令在没有输出的情况下运行,fmt文件夹以 X 标记继续。我想知道 1) 将库文件夹保存在/usr/include …
我已经从 Ubuntu 18.04 升级到 20.04,除了一些令人讨厌的grub问题之外,大多数东西都是开箱即用的。但是我的 QtCreator ( Qt Creator 4.11.0, Based on Qt 5.12.8 (GCC 9.3.0, 64 bit)) 在识别包含的库时遇到了问题。它在更新前运行良好的项目中显示了数千条错误消息。错误消息看起来都像链接器错误消息。一些例子:
error: 'std::string' (aka 'int') is not a class, namespace, or enumeration
error: no matching function for call to 'getline'
error: member reference base type 'std::ifstream' (aka 'int') is not a structure or union
error: no template named 'vector' in namespace 'std'
error: unknown type name 'SystemCallFactory' //this class is from the same project
Run Code Online (Sandbox Code Playgroud)
甚至 qt 和 std 库中的一些错误: …
我想通过包管理器(apt)获取最新版本的 g++(和 clang)。目前我需要自己编译 gcc/g++,这真的需要很多时间。
是否有任何带有“特殊包”的存储库,例如 g++-10-2、g++-11 或仅 g++-master?
我真的很好:-)