2016-12-18 23 views
6

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をビルドして、これが特定のリリースに関連する問題かどうかを確認しようとしましたが、同じエラーが再び発生しました。

さらに進める方法がわかりません。どんな助けも大歓迎です。ありがとう。

+1

ドキュメント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

+0

興味深い提案。私は、参照されたリンクで言及されているように変更を試みました。以前のエラーよりもはるかに時間がかかりましたが、最終的にはエラー "gcc-5.3.0/gcc/cp/except.c:1043:' libc_name_p (char const *、unsigned int) ' collect2:エラー:ldが1の終了ステータスを返しました。 – rahul1210

+0

これらのソリューションを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

答えて

7

他の誰かがこの問題を抱えている場合は、明らかに、これはpatchで修正されています。 GCCのソースファイルに変更を加えたほうが説明が曖昧ですが、手動で行うのは簡単ですが、configuremakeは、-stdのオプションを渡す必要はありません。 GCC 6.2.1をソースファイルに加えてGCC 5.3.0を構築しました。

関連する問題