(데비안) 환경의 glibc와 바이너리를 컴파일 할 때 나는사용하여 사용자 정의 bazel '비 루트입니다
Failed to open library! - ./libdmlab.so
dlopen: cannot load any more object with static TLS
내가이 다소 일반적인 문제입니다 것을 알게 얻고 증가 glibc/2.21.1에 우회했다 한계. 나는 이제 glibc의 새로운 버전 (2.22)을 로컬에 설치하려고 시도하고 있으며 bazel에 그것을 사용하고있다.
소스에서 glibc를 컴파일하고 PATH
, CPATH
및 LIBRARY_PATH
에 적절한 것을 추가했습니다. glibc/lib
에 LD_LIBRARY_PATH
을 추가하면 ldd
segfault가 만들어 졌으므로 삭제했습니다.
바젤에 로컬로 설치된 glibc를 사용하는 것에 대한 질문이 왔습니다. this answer에 설명 된대로
bazel run --linkopt "-Wl,--rpath=/u/sygnowsj/bin/glibc -Wl,--dynamic-linker=/u/sygnowsj/bin/glibc/lib/ld-linux-x86-64.so.2" run //target
,하지만 아무것도 변경하지 않은 : 나는 (물론 -copt
등)로 -linkeropt
를 사용하여 시도했다. 나는 또한 BUILD
파일에 문제가있는 라이브러리의 linkeropts
에
"-Wl,--rpath=/u/sygnowsj/bin/glibc",
"-Wl,--dynamic-linker=/u/sygnowsj/bin/glibc/lib/ld-linux-x86-64.so.2",
를 추가했지만, 그것은 도움이되지 않았다.
모든 타겟에 대해 glibc
의 내 버전에 대해 bazel
링크를 만들려면 어떻게해야합니까? 다른 방법으로 정적 TLS 한도에 도달하는 문제를 피할 수 있습니까?
고맙습니다. 내가 glibc와 올바르게 링크하고 있음이 밝혀졌지만 그 오류는 다른 곳에 놓여있다. – sygi