OpenWrt Forum Archive

Topic: Building ncurses fails with error: C compiler cannot create executable

The content of this topic has been archived on 7 May 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

Hello,

This is my first attempt trying to build OpenWrt on ubuntu.
The build stops at ncurses saying `error: C compiler cannot create executables`.

I did try the curses patch in ticket #19749, but it didn't help.

I tried commenting out these specific tests from ncurses' configure script, but then I get the error `*** No rule to make target 'libs'.  Stop.`

I'm building with gcc5, so I had to add `compiler-gcc5.h` as per this patch.

Am I doing something wrong?

$ make V=s
...
configure: WARNING: you should use --build, --host, --target
configure: WARNING: invalid host type:  
checking for egrep... grep -E
Configuring NCURSES 5.9 ABI 5 (Sun Feb 19 17:48:57 GST 2017)
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
Configuring for linux-gnu
checking for prefix... /home/user/Documents/openwrt-trunk/staging_dir/host
checking for x86_64-linux-gnu-gcc... x86_64-linux-gnu-gcc
checking for C compiler default output... configure: error: C compiler cannot create executables
Makefile:184: recipe for target '/home/user/Documents/openwrt-trunk/build_dir/host/ncurses-5.9/.configured' failed
make[3]: *** [/home/user/Documents/openwrt-trunk/build_dir/host/ncurses-5.9/.configured] Error 77
make[3]: Leaving directory '/home/user/Documents/openwrt-trunk/package/libs/ncurses'
package/Makefile:174: recipe for target 'package/libs/ncurses/host/compile' failed
make[2]: *** [package/libs/ncurses/host/compile] Error 2
make[2]: Leaving directory '/home/user/Documents/openwrt-trunk'
package/Makefile:171: recipe for target '/home/user/Documents/openwrt-trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/stamp/.package_compile' failed
make[1]: *** [/home/user/Documents/openwrt-trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/stamp/.package_compile] Error 2
make[1]: Leaving directory '/home/user/Documents/openwrt-trunk'
/home/user/Documents/openwrt-trunk/include/toplevel.mk:179: recipe for target 'world' failed
make: *** [world] Error 2

Here's my config.log:

This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by configure, which was
generated by GNU Autoconf 2.52.20101002.  Invocation command line was

  $ ./configure   --target=x86_64-linux-gnu --host=x86_64-linux-gnu --build=x86_64-linux-gnu --program-prefix= --program-suffix= --prefix=/home/asrolabe/Documents/openwrt-trunk/staging_dir/host --exec-prefix=/home/asrolabe/Documents/openwrt-trunk/staging_dir/host --sysconfdir=/home/asrolabe/Documents/openwrt-trunk/staging_dir/host/etc --localstatedir=/home/asrolabe/Documents/openwrt-trunk/staging_dir/host/var --sbindir=/home/asrolabe/Documents/openwrt-trunk/staging_dir/host/bin --without-cxx --without-cxx-binding --without-ada --without-debug --without-manpages --without-profile --without-tests --without-curses-h

## ---------- ##
## Platform.  ##
## ---------- ##

hostname = asrolabe-VirtualBox
uname -m = x86_64
uname -r = 4.4.0-59-generic
uname -s = Linux
uname -v = #80-Ubuntu SMP Fri Jan 6 17:47:47 UTC 2017

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = unknown
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
hostinfo               = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH = /home/asrolabe/Documents/openwrt-trunk/staging_dir/host/bin:/home/asrolabe/Documents/openwrt-trunk/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin:/home/asrolabe/Documents/openwrt-trunk/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin:/home/asrolabe/Documents/openwrt-trunk/staging_dir/host/bin:/home/asrolabe/Documents/openwrt-trunk/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin:/home/asrolabe/Documents/openwrt-trunk/staging_dir/host/bin:/home/asrolabe/Documents/openwrt-trunk/staging_dir/host/bin:/home/asrolabe/Documents/openwrt-trunk/staging_dir/host/bin:/home/asrolabe/Documents/openwrt-trunk/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

## ------------ ##
## Core tests.  ##
## ------------ ##

configure:1101: PATH=".;."; conftest.sh
./configure: line 1102: conftest.sh: command not found
configure:1104: $? = 127
configure:1117: checking for egrep
configure:1127: result: grep -E
configure:1141: result: Configuring NCURSES 5.9 ABI 5 (Sun Feb 19 17:48:57 GST 2017)
configure:1246: checking build system type
configure:1264: result: x86_64-pc-linux-gnu
configure:1271: checking host system type
configure:1285: result: x86_64-pc-linux-gnu
configure:1293: checking target system type
configure:1307: result: x86_64-pc-linux-gnu
configure:1338: result: Configuring for linux-gnu
configure:1362: checking for prefix
configure:1374: result: /home/asrolabe/Documents/openwrt-trunk/staging_dir/host
configure:1415: checking for x86_64-linux-gnu-gcc
configure:1430: found /usr/bin/x86_64-linux-gnu-gcc
configure:1438: result: x86_64-linux-gnu-gcc
configure:1701: checking for C compiler version
configure:1704: x86_64-linux-gnu-gcc --version </dev/null >&5
x86_64-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:1707: $? = 0
configure:1709: x86_64-linux-gnu-gcc -v </dev/null >&5
Using built-in specs.
COLLECT_GCC=x86_64-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.4' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 
configure:1712: $? = 0
configure:1714: x86_64-linux-gnu-gcc -V </dev/null >&5
x86_64-linux-gnu-gcc: error: unrecognized command line option '-V'
x86_64-linux-gnu-gcc: fatal error: no input files
compilation terminated.
configure:1717: $? = 1
configure:1737: checking for C compiler default output
configure:1740: x86_64-linux-gnu-gcc "-O2 -I/home/asrolabe/Documents/openwrt-trunk/staging_dir/host/include -I/home/asrolabe/Documents/openwrt-trunk/staging_dir/host/usr/include" \    conftest.c  >&5
x86_64-linux-gnu-gcc: error: "-O2: No such file or directory
x86_64-linux-gnu-gcc: error: \: No such file or directory
configure:1743: $? = 1
configure: failed program was:
#line 1721 "configure"
#include "confdefs.h"

int
main ()
{

  ;
  return 0;
}
configure:1766: error: C compiler cannot create executables

## ----------------- ##
## Cache variables.  ##
## ----------------- ##

ac_cv_build=x86_64-pc-linux-gnu
ac_cv_build_alias=x86_64-linux-gnu
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=set
ac_cv_env_CFLAGS_value='"-O2 -I/home/asrolabe/Documents/openwrt-trunk/staging_dir/host/include -I/home/asrolabe/Documents/openwrt-trunk/staging_dir/host/usr/include" \ '
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_CXXCPP_set=
ac_cv_env_CXXCPP_value=
ac_cv_env_CXXFLAGS_set=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_build_alias_set=set
ac_cv_env_build_alias_value=x86_64-linux-gnu
ac_cv_env_host_alias_set=set
ac_cv_env_host_alias_value=x86_64-linux-gnu
ac_cv_env_target_alias_set=set
ac_cv_env_target_alias_value=x86_64-linux-gnu
ac_cv_host=x86_64-pc-linux-gnu
ac_cv_host_alias=x86_64-linux-gnu
ac_cv_prog_CC=x86_64-linux-gnu-gcc
ac_cv_prog_egrep='grep -E'
ac_cv_target=x86_64-pc-linux-gnu
ac_cv_target_alias=x86_64-linux-gnu
cf_cv_abi_version=5
cf_cv_rel_version=5.9
cf_cv_system_name=linux-gnu
cf_cv_timestamp='Sun Feb 19 17:48:57 GST 2017'

## ------------ ##
## confdefs.h.  ##
## ------------ ##

#define SYSTEM_NAME "linux-gnu"


configure: exit 77

You are doing it right, but you are missing NCurses.

Try this:

apt-get install -y subversion gawk ccache mercurial git-core build-essential libssl-dev libncurses5 libncurses5-dev unzip gawk zlib1g-dev

That should install NCurses as well as other dependencies you may need...

If not post back, I had troubles getting NCurses to install, I had to download all the DEB's manually and install it.

If solved please add "(solved)" to the topic name, thank you!

Cheers big_smile

(Last edited by mys5droid on 20 Feb 2017, 17:38)

Thanks for the suggestion @mys5droid.

I tried the `apt-get install` you suggested, but it didn't solve my problem.

Further, libncurses5 and libncurses5-dev are already the newest versions.
Only the following packages were actually installed -

 git-core javascript-common libjs-excanvas mercurial mercurial-common

The build still stops at ncurses, same as before, with the same error in config.log:

configure:1714: x86_64-linux-gnu-gcc -V </dev/null >&5
x86_64-linux-gnu-gcc: error: unrecognized command line option '-V'
x86_64-linux-gnu-gcc: fatal error: no input files
compilation terminated.
configure:1717: $? = 1
configure:1737: checking for C compiler default output
configure:1740: x86_64-linux-gnu-gcc "-O2 -I/home/asrolabe/Documents/openwrt-trunk/staging_dir/host/include -I/home/asrolabe/Documents/openwrt-trunk/staging_dir/host/usr/include" \    conftest.c  >&5
x86_64-linux-gnu-gcc: error: "-O2: No such file or directory
x86_64-linux-gnu-gcc: error: \: No such file or directory
configure:1743: $? = 1
configure: failed program was:
#line 1721 "configure"
#include "confdefs.h"

int
main ()
{

  ;
  return 0;
}
configure:1766: error: C compiler cannot create executables

Finally solved it, although I'm not exactly sure how.
I had to manually run configure and make from the ncurses source directory.

cd openwrt-trunk/build_dir/host/ncurses/
export CPPFLAGS="-P"
./configure
make

Then continued in the openwrt root directory with

make V=s

Nice work... I wouldn't have figured that one out tongue

Odd, I never ran into that problem... I just ran make and it made all the required packages. It complained about ncurses, but all I had to do was that apt-get I pasted to you.

Anyways great job!

See ya around smile

The discussion might have continued from here.