web-dev-qa-db-ja.com

C ++プログラムをコンパイルできません。エラー:不明なタイプ名 'uint8_t'

EDIT2:問題は単純な誤植ではありませんでした。以下のログにタイプミスをしましたが、それを修正しましたが、問題はまだ残っていました。

編集:以下を試した後、誤ってg ++ではなくgccを1回実行しました。以前はg ++で問題がありましたが、現在は問題があります。

私は現在MacOS High Sierraボックスを使用しています。私は最近、MacBook Airからこのマシンに多くのファイルを移動しました。これには、すべてXcodeのジャンクであると想定しているものも含まれます。ここで、非常に単純なC++プログラムをコンパイルしようとすると、次のようになります。

_#include <iostream>

int main()
{
    // VAR_DEC
    int a = 4;
    // VAR_MANIP
    a = a*2;
    // VAR_PRINT
    std::cout << a << std::endl;
    return 0;
}
_

次のとんでもないエラーが表示されます。

_jrfarah@Josephs-MBP: [config_file_script] $ g++ test.cpp -o test
In file included from test.cpp:1:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/iostream:38:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/ios:216:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/__locale:15:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/string:470:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/string_view:171:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/__string:56:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/algorithm:640:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/memory:629:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/typeinfo:61:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/exception:82:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/cstdlib:86:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/stdlib.h:94:
In file included from /usr/include/stdlib.h:65:
In file included from /usr/include/sys/wait.h:110:
/usr/include/sys/resource.h:196:2: error: unknown type name 'uint8_t'
        uint8_t  ri_uuid[16];
        ^
/usr/include/sys/resource.h:197:2: error: unknown type name 'uint64_t'
        uint64_t ri_user_time;
        ^
/usr/include/sys/resource.h:198:2: error: unknown type name 'uint64_t'
        uint64_t ri_system_time;
        ^
/usr/include/sys/resource.h:199:2: error: unknown type name 'uint64_t'
        uint64_t ri_pkg_idle_wkups;
        ^
/usr/include/sys/resource.h:200:2: error: unknown type name 'uint64_t'
        uint64_t ri_interrupt_wkups;
        ^
/usr/include/sys/resource.h:201:2: error: unknown type name 'uint64_t'
        uint64_t ri_pageins;
        ^
/usr/include/sys/resource.h:202:2: error: unknown type name 'uint64_t'
        uint64_t ri_wired_size;
        ^
/usr/include/sys/resource.h:203:2: error: unknown type name 'uint64_t'
        uint64_t ri_resident_size;
        ^
/usr/include/sys/resource.h:204:2: error: unknown type name 'uint64_t'
        uint64_t ri_phys_footprint;
        ^
/usr/include/sys/resource.h:205:2: error: unknown type name 'uint64_t'
        uint64_t ri_proc_start_abstime;
        ^
/usr/include/sys/resource.h:206:2: error: unknown type name 'uint64_t'
        uint64_t ri_proc_exit_abstime;
        ^
/usr/include/sys/resource.h:210:2: error: unknown type name 'uint8_t'
        uint8_t  ri_uuid[16];
        ^
/usr/include/sys/resource.h:211:2: error: unknown type name 'uint64_t'
        uint64_t ri_user_time;
        ^
/usr/include/sys/resource.h:212:2: error: unknown type name 'uint64_t'
        uint64_t ri_system_time;
        ^
/usr/include/sys/resource.h:213:2: error: unknown type name 'uint64_t'
        uint64_t ri_pkg_idle_wkups;
        ^
/usr/include/sys/resource.h:214:2: error: unknown type name 'uint64_t'
        uint64_t ri_interrupt_wkups;
        ^
/usr/include/sys/resource.h:215:2: error: unknown type name 'uint64_t'
        uint64_t ri_pageins;
        ^
/usr/include/sys/resource.h:216:2: error: unknown type name 'uint64_t'
        uint64_t ri_wired_size;
        ^
/usr/include/sys/resource.h:217:2: error: unknown type name 'uint64_t'
        uint64_t ri_resident_size;
        ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
_

私は、gcc、_g++_、ccbrew、Xcode、_command-line-tools_など。次のページの提案もすべて試しました。

以上、しかしそれらはそれをかなりうまくまとめています。どのソリューションも機能していません。

私は 最後のもの が最も可能性の高い解決策を持っていると思います。 (ページで「不明」を検索すると、修正が表示されます。)開発者によると、

修正:「ヘッダー検索パス」ビルド設定から/ opt/local/include/**および/ opt/local/lib/**を削除します。それらを目的のインクルードディレクトリへのより具体的なパスに置き換えます。私の特定のケースでは、これはそれらを/opt/local/include/glib-2.0 /opt/local/lib/glib-2.0/include/opt/local/include /で置き換えることを意味しました。稼働し始めました!

ただし、Xcodeはインストールせず、コマンドライン開発者ツールのみをインストールしました。したがって、「Header Search Paths」ビルド設定にアクセスする簡単な方法がないため、彼のソリューションを試すことができません。

この問題の解決策を探しています。できれば、OS全体をインストールする必要がないものが望ましいです。あるいは、誰かがビルド設定ファイルを見つけるのを親切に案内してくれれば、私はとても感謝します。

12
Joseph Farah

システムのGCCインストールを中断したことはかなり明白です。 GCCはコンパイラのスイートであり、G ++はC++フロントエンド。多くの場合、パッケージマネージャーにはgcc-g++と呼ばれる個別のパッケージがありますが、ソースからコンパイルする場合は--enable-languages=c,c++を実行するだけです。ここで、XCodeを再インストールしても問題が解決しない場合は(すでにこれを実行しているはずですが、「領域が多すぎる」場合は削除するだけです)、ソースからGCCをコンパイルしてみることができます。 GNU wiki から改作:

  • まず、必要なGCC tarボールを ここ から取得します。

  • tar zxvf gcc*で解凍します

  • cd gcc*、次に./contrib/download_prerequisites

  • ソース外ビルドを実行します:mkdir build && cd build

  • ../gcc*/configure --prefix=$HOME/gcc-install --enable-languages=c,c++

  • makeおよびmake install

次に、$HOME/gcc-install/binをパスに追加するだけで、問題ありません。

3
OwO

多分あなたは試すことができます:

mv /usr/local/include /usr/local/include.old

次に:

brew install llvm

11