# C++ preprocessor "/lib/cpp" fails sanity check Что

## SergiyK

Дорый день. при попытке поставить amanda выдается такое сообщение:

checking how to run the C++ preprocessor... /lib/cpp

configure: error: C++ preprocessor "/lib/cpp" fails sanity check

See `config.log' for more details.

Подскажите, что это такое и как с ним боротся?

Заранее благодарен за ответ.

----------

## Taoub

1) посмори что там в config.log

2) Попробуй пересобрать gcc-config

----------

## SergiyK

 *Quote:*   

> 1) посмори что там в config.log

 

configure:11450: i686-pc-linux-gnu-g++ -E -D_FILE_OFFSET_BITS=64    conftest.cc

i686-pc-linux-gnu-g++: No such file or directory

configure:11456: $? = 1

configure: failed program was:

| /* confdefs.h.  */

(И дальше пошел список типа:

| #define PACKAGE_NAME ""

| #define PACKAGE_TARNAME ""

| #define PACKAGE_VERSION ""

| #define PACKAGE_STRING ""

| #define PACKAGE_BUGREPORT "")

..........................................................

configure:11557: /lib/cpp -D_FILE_OFFSET_BITS=64    conftest.cc

cpp: conftest.cc: C++ compiler not installed on this system

configure:11563: $? = 1

configure: failed program was:

| /* confdefs.h.  */

(аналогичный список)

Такие сообщения попадаются по нескольку раз. Это что значит, что у меня не стоит C++ compiler? Быть не может!

 *Quote:*   

> 2) Попробуй пересобрать gcc-config

 

А это поможет?

Заранее благодарен за ответ.

----------

## SergiyK

 *Quote:*   

>  Попробуй пересобрать gcc-config

 

Не помогло.... Что посоветуете?

----------

## YD

У меня такое было очень давно. Тут gcc-config надо было не пересобирать, gcc-config -l поставь на новую версию простую gcc. У тебя наверно i386 стоит дефолтный.

----------

## SergiyK

 *Quote:*   

>  gcc-config -l поставь на новую версию простую gcc. У тебя наверно i386 стоит дефолтный.

 

Не-а. 

gcc-config -l

[1] i686-pc-linux-gnu-3.3.5 *

[2] i686-pc-linux-gnu-3.3.5-hardened

[3] i686-pc-linux-gnu-3.3.5-hardenednopie

[4] i686-pc-linux-gnu-3.3.5-hardenednossp

Тоесть, i686-pc-linux-gnu-3.3.5. А может просто обновить порты и обновить систему? Как думаете, поможет?

Заранее благодарен за ответ.

----------

## YD

Возможно у тебя GCC стоит с флагом nocxx, т.е. без C++ компилятора. Попробуй вручную примитивный C++ код скомпилировать используя g++ и проверь /lib/cpp --version.

----------

## SergiyK

 *Quote:*   

>  Возможно у тебя GCC стоит с флагом nocxx, т.е. без C++ компилятора. Попробуй вручную примитивный C++ код скомпилировать используя g++ и проверь /lib/cpp. 

 

Да, Вы правы

```
emerge -pv gcc

These are the packages that I would merge, in order:

Calculating dependencies ...done!

[ebuild   R   ] sys-devel/gcc-3.3.5-r1  ...... -nocxx ............
```

Это что, нужно пересобрать gcc с этим флагом, я так понимаю?

----------

## YD

Нет, его наоборот не должно быть. Иначе не будет поддержки C++. Тобишь "-nocxx". /lib/cpp --version что показывает?

----------

## SergiyK

 *Quote:*   

> Нет, его наоборот не должно быть. Иначе не будет поддержки C++. Тобишь "-nocxx". /lib/cpp --version что показывает?

 

/lib/cpp --version

cpp (GCC) 3.3.5  (Gentoo Linux 3.3.5-r1, ssp-3.3.2-3, pie-8.7.7.1)

Copyright (C) 2003 Free Software Foundation, Inc.

----------

## YD

Странный случай... И в make.conf? 

```
CHOST="i686-pc-linux-gnu"
```

Тогда надо попробывать вот такой вот код сохранить в test.cpp 

```
#include <iostream>

#include <string>

using namespace std;

class lal{

public:

    lal (const char* w){

        this->word=w;

    }

    void yo(){

        cout << this->word;

    }

private:

    string word;

};

int main (){

    lal * obj = new lal("blablabla");

    obj->yo();

    return 0;

}
```

А потом 

```
/lib/cpp /path/to/test.cpp | less
```

 Если кучу кода выведет, то хорошо, в противном случае даже не знаю =/ Надо поглубже порыться в манах.

Ну и конечно надо посмотреть config.log в папке установки в /var/tmp/portage/<package>/work

[edit] Мда, я кривой. Тему невнимательно читал  *Quote:*   

> i686-pc-linux-gnu-g++: No such file or directory 

  Походу у тебя в нету /usr/bin/i686-pc-linux-gnu-g++. А это действительно что-то странное. Либо у тебя gcc всёже поставлен с флагом nocxx либо как-то удалены. У меня уже голова несоображает после ночи.

----------

## SergiyK

 *Quote:*   

> Странный случай... И в make.conf? 
> 
> Код:	
> 
> CHOST="i686-pc-linux-gnu"

 

Да

 *Quote:*   

> Тогда надо попробывать вот такой вот код сохранить в test.cpp
> 
> ....................
> 
> А потом 
> ...

 

Делаем: /lib/cpp /home/sergey/test.cpp | less

Получаем: cpp: /home/sergey/test.cpp: C++ compiler not installed on this system

В каких манах нужно рыться? А config.log я смотрел, вот что в нем:

```

configure:11450: i686-pc-linux-gnu-g++ -E -D_FILE_OFFSET_BITS=64 conftest.cc 

i686-pc-linux-gnu-g++: No such file or directory 

configure:11456: $? = 1 

configure: failed program was: 

| /* confdefs.h. */ 

(И дальше пошел список типа: 

| #define PACKAGE_NAME "" 

| #define PACKAGE_TARNAME "" 

| #define PACKAGE_VERSION "" 

| #define PACKAGE_STRING "" 

| #define PACKAGE_BUGREPORT "") 

.......................................................... 

configure:11557: /lib/cpp -D_FILE_OFFSET_BITS=64 conftest.cc 

cpp: conftest.cc: C++ compiler not installed on this system 

configure:11563: $? = 1 

configure: failed program was: 

| /* confdefs.h. */ 

(аналогичный список) 

```

Такие сообщения попадаются по нескольку раз.

----------

## YD

https://forums.gentoo.org/viewtopic.php?t=278673 Ну вот, не у тебя одного такая проблема. Уже вторая тема, где поиск по форуму помогает. Думал вы сначала сами немного роетесь (:

----------

## SergiyK

Спасибо за ссылку, чесно, недоглядел  :Smile: 

----------

