Linux 용 프로젝트에 CMake, GTest 및 Intel의 TBB를 사용하고 싶습니다. 지금까지 불만없이 구축 할 수 있었지만 TBB에 필요한 동적 연결은 다음과 같습니다. 그들의 라이브러리 중 하나에 대해서만 약간의 문제가 있습니다. 나는 그들의 CMake 기능을 사용하고Intel TBB 링크 및 RPATH
은과 같이 호출 :
set(TBB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tbb)
set(TBB_BUILD_DIR "tbb_build_dir=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}")
set(TBB_BUILD_PREFIX "tbb_build_prefix=tbb")
include(${TBB_ROOT_DIR}/cmake/TBBBuild.cmake)
tbb_build(TBB_ROOT ${TBB_ROOT_DIR}
MAKE_ARGS
${TBB_BUILD_DIR}
${TBB_BUILD_PREFIX}
CONFIG_DIR
TBB_DIR)
find_package(TBB REQUIRED)
실행, 다음과 같은 에러가 발생합니다
error while loading shared libraries: libtbbmalloc_debug.so.2: cannot open shared object file: No such file or directory
ldd <whatever_test_executable>
를 실행 한 후 나는 다음과 같은 출력을 얻을
linux-vdso.so.1 => (0x00007fff741b9000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd99a6fd000)
libtbb_debug.so.2 => /home/mrbzapp/test_proj/build/Builds/lib/tbb_debug/libtbb_debug.so.2 (0x00007fd99a489000)
libtbbmalloc_proxy_debug.so.2 => /home/mrbzapp/test_proj/build/Builds/lib/tbb_debug/libtbbmalloc_proxy_debug.so.2 (0x00007fd99a285000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd99a081000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fd999dd4000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fd999a99000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fd999887000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fd99967f000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd9992f7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd998fee000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd998dd7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd998a0e000)
/lib64/ld-linux-x86-64.so.2 (0x000055a935c16000)
libtbbmalloc_debug.so.2 => not found
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fd9987f2000)
libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007fd9985c0000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fd99839e000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fd998198000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fd997f92000)
빌드하는 동안 나는 CMake (그리고 TBB의 TBBBuild
fun ction)은 rpath
에 /home/mrbzapp/test_proj/build/Builds/lib/tbb_debug/
을 추가하고 연결된 tbb 라이브러리의 대부분은이 경로를 사용하지만 libtbbmalloc_debug.so.2
은 감기에 빠졌고 모든 것을 가져 왔습니다. 나는 완전히 이해할 수없는 무엇을 발견
는 libtbbmalloc_debug.so.2
않습니다이 존재하는지, 그리고 있습니다 TBB의 기능에 의해 설정된 RPATH를 사용하여 다른 TBB 라이브러리와 함께 존재한다.
내가 잘못하고있는 것은 무엇일까? 그리고 이러한 모든 라이브러리가 런타임에 제대로 링크되도록하려면 어떻게해야할까요?
올바른 방법이 아닙니다. 응용 프로그램은 실행할 수 있었지만 TBB는 메모리를 관리 할 수 없어 모든 방식으로 이상한 충돌이 발생했습니다. 해결 방법은 Alexey Moskalev에게 감사드립니다! – MrBZapp