nvidia-cuda-sdk-9.0.176がglibc-2.26-r5でビルドできない問題の解決方法
nvidia-cuda-sdk-9.0.176をglibc-2.26-r5環境でビルドしようとすると,
/usr/include/bits/floatn.h(61): error: invalid argument to attribute "__mode__"
/usr/include/bits/floatn.h(73): error: identifier "__float128" is undefined
のようなビルドエラーになります.
これを正攻法で解決するのは無理そうだったので,
/usr/include/bits/floatn.h
の冒頭に書いてある
#if (defined __x86_64__ \
? __GNUC_PREREQ (4, 3) \
: (defined __GNU__ ? __GNUC_PREREQ (4, 5) : __GNUC_PREREQ (4, 4)))
# define __HAVE_FLOAT128 1
#else
# define __HAVE_FLOAT128 0
#endif
を
# define __HAVE_FLOAT128 0
に置換しました.
junkdrawer overlayだとnvidia-cuda-sdk-9.1.85を配布しているようなので, もしかしたらそちらだと問題ないのかもしれません. そっちが正攻法なのかも.
どうせそのうちgentooの公式リポジトリにもcuda 9.1が載ると思うので, 今回はバッドノウハウを使いました.