CMAKE_C_COMPILER не является полным путем к существующему инструменту компилятора

Я недавно исследовал distcc и не смог заставить его работать. Так что я

sudo apt-get remove distcc

После этого я получаю ошибку

==> Processing catkin package: 'gencpp'
==> Building with env: '/opt/ros/kinetic/env.sh'
Makefile exists, skipping explicit cmake invocation...
==> make cmake_check_build_system in '/home/pi/ros_catkin_ws/build_isolated/gencpp'
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:2 (project):
  The CMAKE_C_COMPILER:

    /usr/local/bin/cc

is not a full path to an existing compiler tool.
Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to the compiler, or to the compiler name if it is in the PATH.

CMake Error at CMakeLists.txt:2 (project):
  The CMAKE_CXX_COMPILER:

    /usr/local/bin/c++

  is not a full path to an existing compiler tool.
Tell CMake where to find the compiler by setting either the environment variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path to the compiler, or to the compiler name if it is in the PATH.

-- Configuring incomplete, errors occurred!
See also "/home/pi/ros_catkin_ws/build_isolated/gencpp/CMakeFiles/CMakeOutput.log".
See also "/home/pi/ros_catkin_ws/build_isolated/gencpp/CMakeFiles/CMakeError.log".
Makefile:304: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
<== Failed to process package 'gencpp': 
  Command '['/opt/ros/kinetic/env.sh', 'make', 'cmake_check_build_system']' returned non-zero exit status 2

Reproduce this error by running:
==> cd /home/pi/ros_catkin_ws/build_isolated/gencpp && /opt/ros/kinetic/env.sh make cmake_check_build_system

Command failed, exiting.

я сделал

sudo apt-get install build_essential
sudo apt-get -f install
sudo apt-get update
sudo apt-get upgrade
export CC=/usr/local/bin/gcc
export CXX=/usr/local/bin/g++

но все равно получаю ту же ошибку.

Как я могу решить эту ошибку? Я попытался сбросить символические ссылки и удалить экспорт

6 ответов

Я думаю, что вы должны сбросить CC а также CXXили, по крайней мере, используйте системные компиляторы, как это (сбросьте /local):

export CC=/usr/bin/gcc
export CXX=/usr/bin/g++

Вам нужно проверить, где находятся ваши gcc и g++, и сделать мягкую ссылку, потому что я использую CentOS

yum -y install centos-release-scl
yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils

чтобы установить gcc, мне нужно сделать следующее, чтобы избежать той же ошибки, что и вы

sudo ln -s /opt/rh/devtoolset-8/root/usr/bin/gcc /usr/bin/cc
sudo ln -s /opt/rh/devtoolset-8/root/usr/bin/g++ /usr/bin/c++

Я видел те же симптомы, если у вас остались папки сборки после сборки в другой среде (т. е. при переключении с локального на контейнер или между различными вариантами контейнера).

Обязательно очистите сгенерированную сборку перед повторной попыткой, поскольку она будет кэшировать местоположения для вещей, которые больше не сможет найти.

У меня была аналогичная ошибка при установке openCV 4.2.0 с cuda 10.2 на ubuntu 18.04. Я исправил это (соответственно измените версию gcc/g++)

sudo apt install gcc-6 g++-6

Все вышеперечисленные предложения не решают проблему для меня в Ubuntu 18.04. У меня это сработало, используя:

sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-7 70

После того, как у меня уже было:

sudo update-alternatives --install /usr/bin/c++ g++ /usr/bin/g++-7 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70

Я столкнулся с проблемой при компиляции opencv с оптимизацией cuda. Компилятор выдал такое сообщение:

CMAKE_C_COMPILER:
/usr/bin/gcc-6
не является полным путем к существующему инструменту компилятора.

Сообщение на самом деле понятно, поскольку оно просто сообщает, что не найдено в указанном месте, которым в данном случае является . Чтобы убедиться в этом, я зашел в/usr/bin/папку и выполнил командуls gcc*чтобы просмотреть все доступные компиляторы GCC GNU C.

Как видно, их не было.gcc-6доступен, но вместо этогоgcc-9. Таким образом, мне просто нужно было указать соответствующий путь-D CMAKE_C_COMPILER=/usr/bin/gcc-9и все получилось найти. Обратите внимание: если в файле присутствует какой-либо компилятор gcc GNU C/usr/bin/gcc-6это означает, что он не устанавливается, и вам придется установить его и снова скомпилировать opencv.

Другие вопросы по тегам