GCC에 OpenMP 지정
OpenMP의 경우, 내 코드가 지시어(예: #pragmaomp ... 등)를 사용하지 않고 API의 함수(예: omp_get_thread_num())를 사용할 때,
-fopenmp를 사용하는 대신 gcc에 libgomp.a를 직접 지정하는 것이 작동하지 않는 이유는 다음과 같습니다.
gcc hello.c /usr/lib/gcc/i686-linux-gnu/4.4/libgomp.a -o hello업데이트: libgomp.a로의 링크는 작동하지 않지만 libgomp.so 로의 링크는 작동한다는 것을 방금 발견했습니다.OpenMP는 정적 링크가 될 수 없다는 뜻입니까?
라이브러리 파일을 지정하지 않고 -fopenmp만 작동하는 이유
gcc hello.c -fopenmp -o hello업데이트: 즉, -fopenmp를 사용할 때 libgomp.so 에 명시적인 링크가 필요하지 않은 이유는 무엇입니까?
이것이 컴파일되는 이유는 무엇입니까?
gcc hello.c -L/usr/lib/gcc/i686-linux-gnu/4.4/ -lgomp -o hello코드에 OpenMP 지시가 있으면 무시합니까?
감사합니다!
일반적으로 지시와 기능은 서로 다르다는 것을 명심해야 합니다; 전자는 다음에 의해 통제됩니다.-fopenmp그리고 후자는 OpenMP 라이브러리에 링크하여 제어합니다.
(댓글을 통합하도록 업데이트됨)사용해 보십시오.
-fopenmp그리고.-staticOpenMP를 정적으로 연결하는 옵션. 왜냐하면 이것은-lgomp -lrt, 다음 명령은 당신이 위치를 지정하지 않는 한 정확하게 컴파일되지 않습니다.librt.a.gcc hello.c /usr/lib/gcc/i686-linux-gnu/4.4/libgomp.a -o hello(댓글을 통합하기 위해 업데이트됨) OpenMP 라이브러리가 이미 라이브러리 경로에 있고 시스템의 동적 링크기가 다음 명령어를 올바르게 컴파일하고 있다고 생각합니다.
libgomp.so.gcc hello.c -fopenmp -o hello다음 명령은 OpenMP용 공유 개체에 링크되어 있으므로 올바르게 컴파일되고 있을 것입니다(
libgomp.so). 참고:-static옵션이 사용되지 않습니다.gcc hello.c -L/usr/lib/gcc/i686-linux-gnu/4.4/ -lgomp -o hello지정하지 않으시면
-fopenmpoption, OpenMP 지시는 무시해야 합니다.
언급URL : https://stackoverflow.com/questions/6351961/specify-openmp-to-gcc
'programing' 카테고리의 다른 글
| Java에서 Excel 차트 만들기 (0) | 2023.09.25 |
|---|---|
| 크기를 사용하더라도 오는 불필요한 가로 스크롤 바아 ag-grid에서 ColumnsToFit (0) | 2023.09.25 |
| MySQL에서 자동 증분 카운터를 변경하려면 어떻게 해야 합니까? (0) | 2023.09.25 |
| 우분투에 gtk 개발 의존성을 설치하는 방법은? (0) | 2023.09.25 |
| mysql 데이터가 복제되지 않지만 복제는 문제가 없는 것 같습니다. (0) | 2023.09.25 |