>백엔드 개발 >C++ >g에서 \'std::thread를 사용하기 위해 멀티스레딩 활성화: 작업이 허용되지 않음\'이 발생하는 이유와 해결 방법은 무엇입니까?

g에서 \'std::thread를 사용하기 위해 멀티스레딩 활성화: 작업이 허용되지 않음\'이 발생하는 이유와 해결 방법은 무엇입니까?

DDD
DDD원래의
2024-10-30 12:55:27239검색

Why Does  g   Throw

g를 사용하여 멀티스레드 코드 컴파일: 문제 해결 및 해결 방법 구현

POSIX 스레드 라이브러리에 대한 링크에 필요한 -pthread 플래그를 포함했음에도 불구하고, g 를 사용하여 멀티스레드 코드를 컴파일할 때 오류가 발생할 수 있습니다. "Enable multithreading to use std::thread: Operation not allowed" 오류 메시지는 현재 구성에서 멀티스레딩 기능이 비활성화되어 있음을 나타냅니다.

이 문제를 해결하기 위해 관련 버그 토론에서 제안된 해결 방법에는 -Wl,--no-as-needed 플래그를 컴파일 명령에 추가합니다. 이 플래그는 링커에게 자동 종속성 해결을 수행하지 않도록 지시합니다. 이는 시스템 제공 POSIX 스레드 라이브러리와의 충돌을 해결하는 데 도움이 될 수 있습니다.

g++ main.cpp -o main.out -pthread -std=c++11 -Wl,--no-as-needed

이 해결 방법을 구현하면 성공적으로 컴파일하고 실행할 수 있습니다. g 를 사용하는 멀티스레드 코드.

위 내용은 g에서 \'std::thread를 사용하기 위해 멀티스레딩 활성화: 작업이 허용되지 않음\'이 발생하는 이유와 해결 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.