CUDAツールキットは5.3.1以降のGCCをサポートしていないため、古いバージョンのGCCが必要です。これをインストールしようとしているFedoraマシンGCC 6が付属しています。私はマシンをあまり支配していないので、自分でGCCを構築する必要がありました。私が続いている手順は、次のとおりです。C++ 11のエラーのためにGCCをビルドできません
$ cd gcc-5.3.0
$ contrib/download_prerequisites
$ cd ../build
$ ../gcc-5.3.0/configure --prefix=$HOME/local/gcc-5.3.0 --program-suffix=5.3 --enable-shared --enable-multiarch --enable-threads=posix --enable-languages=c,c++,fortran --enable-checking=release --with-tune=generic
$ make
これが成功
configure
になり
が、make
はエラーで失敗します。
cfns.gperf:101:1: error: ‘const char* libc_name_p(const char*, unsigned int)’ redeclared inline with ‘gnu_inline’ attribute
は、他のC++ 11回の警告の全体の束があります。いくつかのGoogle検索の後、GCC 6を使ってGCC 5以上をビルドする必要があると考えました。コンパイラにC++ 98を従わせることができれば助けになると思いました。だから、私は試しました:
$ export CXXFLAGS="-std=gnu++98"
$ ../gcc-5.3.0/configure ...
$ make
うまくいきませんでした。私は同じC++ 11の警告を受け取り続けていますが、ビルドにはまったく同じエラーで失敗します。次に、試しました:
$ ../gcc-5.3.0/configure CXXFLAGS="-std=gnu++98" ...
$ make
もう一度同じエラーが発生しました。今回はMakefileを覗いてみたところ、CXXFLAGS
は-std=gnu++98
に設定されているはずです。また、GCC 4.9.3をビルドして、これが特定のリリースに関連する問題かどうかを確認しようとしましたが、同じエラーが再び発生しました。
さらに進める方法がわかりません。どんな助けも大歓迎です。ありがとう。
ドキュメントhttps://gcc.gnu.org/onlinedocs/gcc/Inline.htmlによると、 'gnu_inline'は、c99より前のCコードへのgcc拡張です。ソースコードがあるので、エラーの原因となるファイルを見つけ、C99/11およびC++の構文、または '__INLINE'または' __inline__'に従うように、違反宣言を 'inline'に変更してみることができます。私の推測では、あなたのC++コードには、C99より前のCコード用に書かれたヘッダがいくつか含まれています。詳細はこちら:https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00375.html – user3528438
興味深い提案。私は、参照されたリンクで言及されているように変更を試みました。以前のエラーよりもはるかに時間がかかりましたが、最終的にはエラー "gcc-5.3.0/gcc/cp/except.c:1043:' libc_name_p (char const *、unsigned int) ' collect2:エラー:ldが1の終了ステータスを返しました。 – rahul1210
これらのソリューションを1つずつ試してみてください。 https://www.google.com/search?q=undefined+reference+to+%60libc_name_p&rlz=1CAASUE_enUS669US669&oq=undefined+reference+to+%60libc_name_p&aqs=chrome..69i57&sourceid=chrome&ie=UTF-8 – user3528438