小编Edw*_*ard的帖子

如何为jetson nano(arm64)构建gcc 11交叉编译器

我正在遵循指南,但是当我尝试构建 C++ 库时,出现以下致命错误。

\n
../../../../gcc-11.1.0/libsanitizer/asan/asan_linux.cpp: In function \xe2\x80\x98void __asan::AsanCheckIncompatibleRT()\xe2\x80\x99:\n../../../../gcc-11.1.0/libsanitizer/asan/asan_linux.cpp:199:21: error: \xe2\x80\x98PATH_MAX\xe2\x80\x99 was not declared in this scope\n  199 |       char filename[PATH_MAX];\n      |                     ^~~~~~~~\n../../../../gcc-11.1.0/libsanitizer/asan/asan_linux.cpp:200:35: error: \xe2\x80\x98filename\xe2\x80\x99 was not declared in this scope; did you mean \xe2\x80\x98rename\xe2\x80\x99?\n  200 |       MemoryMappedSegment segment(filename, sizeof(filename));\n      |                                   ^~~~~~~~\n      |             \n
Run Code Online (Sandbox Code Playgroud)\n

gcc arm cross-compiling nvidia-jetson-nano

6
推荐指数
1
解决办法
1178
查看次数

如何编写成功链接gstreamer的CMAKE文件基础教程5

我正在尝试编写一个 CMAKE 文件来编译此处找到的代码。

我当前的 CMAKE 文件如下所示,并且已成功编译并链接了之前的教程。它也编译了这个,但在链接时出现以下错误:

undefined reference to `gst_video_overlay_get_type'
undefined reference to `gst_video_overlay_set_window_handle'
Run Code Online (Sandbox Code Playgroud)

CMAKE 文件如下所示:

cmake_minimum_required(VERSION 3.18)
project(gstreamer)

set(CMAKE_CXX_STANDARD 20)

find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)

pkg_search_module(GST REQUIRED gstreamer-1.0>=1.4
        gstreamer-sdp-1.0>=1.4
        gstreamer-app-1.0>=1.4
        gstreamer-video-1.0>=1.4
        )


add_executable(gstreamer main.cpp)

target_include_directories(gstreamer PRIVATE ${GTK3_INCLUDE_DIRS} ${GST_INCLUDE_DIRS})
target_link_libraries(gstreamer ${GTK3_LIBRARIES} ${GST_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

其他 SO 帖子建议了gstreamer-video-1.0我相信我所在的链接:

target_link_libraries(gstreamer ${GST_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

如果我误解了 PkgConfig 的工作原理,我非常感谢您的解释。

谢谢

cmake gstreamer

4
推荐指数
2
解决办法
8932
查看次数

c++20 执行策略类型

我一直在研究标准算法,并注意到您可以指定执行策略。

此处的文档列出了 4 项政策:

std::execution::sequenced_policy  
std::execution::parallel_policy 
std::execution::parallel_unsequenced_policy  
std::execution::unsequenced_policy
Run Code Online (Sandbox Code Playgroud)

我了解并行策略和有序策略之间的区别,但我不确定为什么您还需要未排序和未排序的并行?

据我所知,无论如何您都无法保证线程执行顺序,所以这不会使并行和并行未排序策略相同吗?

如果您不能并行化策略自动回退到顺序策略,为什么要添加正常的未排序策略?

我错过了什么?

c++ c++17 c++20

3
推荐指数
1
解决办法
353
查看次数

使用 constexpr + auto 作为返回和参数类型的奇怪类型推导

我一直在玩编译器优化和编译器资源管理器,并注意到 g++ 9.3(本地测试)中的以下缺点。该问题似乎在 g++ 10.1(在编译器资源管理器上测试)中仍然存在。我正在使用

请注意以下代码:

#include <iostream>
#include <iomanip>

constexpr auto fib( auto x )
{
    if( x == 0 )
        return 0;
    else if( x == 1 )
        return 1;
    else
        return fib( x - 1 ) + fib( x - 2 );
}

int main( int argc, char * argv[] )
{
    std::cerr << std::setprecision(10) << fib( 47.l );
}
Run Code Online (Sandbox Code Playgroud)

编译器资源管理器链接在这里

我知道如果我放了 47,模板参数推导会推导出 function int foo( int x ),但是即使我传递一个 long double 文字,这种情况仍然存在。

这会导致溢出。

为什么编译器不能在编译时推断出我的返回类型应该是双精度型?我会期望,因为 …

c++ g++ compiler-optimization c++20

0
推荐指数
1
解决办法
69
查看次数