Cmake errors: The CXX Compiler identification is unknown, The C compiler identification is unknown

4.9k views Asked by At

I'm trying to install OpenCV on Fedora 21 with a cross compiler for ARM processor.

However, when i try to configure using Cmake 3.03, it gives the error:

*The CXX compiler identification is unknown
The C compiler identification is unknown
Check for working CXX compiler: /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++
Check for working CXX compiler: /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++ -- broken
CMake Error at /usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake:54 (message):
  The C++ compiler "/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++" is
  not able to compile a simple test program.
  It fails with the following output:
   Change Dir: /opt/opencv/relarm/CMakeFiles/CMakeTmp

  Run Build Command:"/usr/bin/gmake" "cmTryCompileExec1616328985/fast"
  /usr/bin/gmake -f CMakeFiles/cmTryCompileExec1616328985.dir/build.make
  CMakeFiles/cmTryCompileExec1616328985.dir/build
  gmake[1]: Entering directory '/opt/opencv/relarm/CMakeFiles/CMakeTmp'
  /usr/bin/cmake -E cmake_progress_report
  /opt/opencv/relarm/CMakeFiles/CMakeTmp/CMakeFiles 1
  Building CXX object
  CMakeFiles/cmTryCompileExec1616328985.dir/testCXXCompiler.cxx.o
  /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++ -o
  CMakeFiles/cmTryCompileExec1616328985.dir/testCXXCompiler.cxx.o -c
  /opt/opencv/relarm/CMakeFiles/CMakeTmp/testCXXCompiler.cxx

  /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/as:
  error while loading shared libraries: libz.so.1: cannot open shared object
  file: No such file or directory
  CMakeFiles/cmTryCompileExec1616328985.dir/build.make:57: recipe for target
  'CMakeFiles/cmTryCompileExec1616328985.dir/testCXXCompiler.cxx.o' failed
  gmake[1]: Leaving directory '/opt/opencv/relarm/CMakeFiles/CMakeTmp'
  gmake[1]: ***
  [CMakeFiles/cmTryCompileExec1616328985.dir/testCXXCompiler.cxx.o] Error 1
  Makefile:118: recipe for target 'cmTryCompileExec1616328985/fast' failed
  gmake: *** [cmTryCompileExec1616328985/fast] Error 2


  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:63 (project)
Configuring incomplete, errors occurred!
See also "/opt/opencv/relarm/CMakeFiles/CMakeOutput.log".
See also "/opt/opencv/relarm/CMakeFiles/CMakeError.log".*

I tried adding Path to my bash_profile, so that it looks like this:

# .bash_profile

# Get the aliases and functions if [ -f ~/.bashrc ]; then
        . ~/.bashrc fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin export PATH=$PATH:/usr/local/bin:/usr/local/sbin:/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++:/usr/bin/gmake:/usr/share/bin:/usr/share/sbin

I Have been googling around for hours but couldn't find any helpful steps. Any help would be appreciated. Thanks in advance.

1

There are 1 answers

5
missimer On BEST ANSWER

From the output it appears that cmake was able to find your cross compiler but as the output says it can't compile a simple program. I would start with creating Hello World in C++ and trying to compile that with your cross compiler. If that doesn't work that is your first problem. If it does work then I would guess it has to do with some environment variable(s). You could try to have cmake print the environment variables before it tries to compile the simple C++ program and compare to your shell environment variables, sorry I can't be more helpful than that.

Update:

So I downloaded FriendlyArm and the binaries it provides are 32 bit ELF's so you will need the 32 bit version of libz. A yum install zlib.i686 should solve your issue. The FriendlyArm toolchain works for me and I have zlib.i686 installed already. If you get any other errors about missing shared objects make sure you have the 32 bit version installed.