でカスタムのglibcを使用して、私は非ルート(Debianの)環境にいると私は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をbazelで使用することの問題があります。 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
が、それは何も変更しませんでした:私はと-linkeropt
(同様に-copt
)を使用して試してみました。私はまた、BUILD
ファイルに問題のあるライブラリーのlinkeropts
に
"-Wl,--rpath=/u/sygnowsj/bin/glibc",
"-Wl,--dynamic-linker=/u/sygnowsj/bin/glibc/lib/ld-linux-x86-64.so.2",
を追加しようとしたが、それはどちらか助けていません。
をすべてのターゲットでglibc
のバージョンにリンクさせるにはどうすればよいですか?静的なTLS制限を打つという問題を回避する方法はありますか?
ありがとうございます。私はglibcと正しくリンクしていたことが判明しましたが、エラーは別の場所に置かれていました。 – sygi