Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Nov 2016 07:58:28 -0800
From:      Mark Millard <markmi@dsl-only.net>
To:        FreeBSD Toolchain <freebsd-toolchain@freebsd.org>, FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>
Subject:   c++ (g++) from base/gcc (via cross build) does not find C++ standard headers, such as cstdlib
Message-ID:  <5D62C0E6-E6B7-42F5-B74B-8F555C154449@dsl-only.net>

next in thread | raw e-mail | index | archive | help
This was noticed via trying to build benchmarks/bonnie++ (via =
portmaster):

> --- bon_csv2html.o ---
> c++ -pipe -g -fno-strict-aliasing  -DNDEBUG -Wall -W -Wshadow =
-Wpointer-arith -Wwrite-strings -pedantic -ffor-scope -Wcast-align =
-Wsign-compare -Wpointer-arith -Wwrite-strings -Wformat-security -Wswit
> ch-enum -Winit-self    -pipe -g -fno-strict-aliasing  -c =
bon_csv2html.cpp -o bon_csv2html.o
. . .
> --- bon_csv2html.o ---
> bon_csv2html.cpp:2:19: fatal error: cstdlib: No such file or directory
> compilation terminated.
> *** [bon_csv2html.o] Error code 1
>=20
> make[2]: stopped in =
/usr/obj/portswork/usr/ports/benchmarks/bonnie++/work/bonnie++-1.97.2
> --- bonnie++.o ---
> bonnie++.cpp:31:18: fatal error: algo.h: No such file or directory
> compilation terminated.

In the file system there are:

> # find / -name "cstdlib" -print | more                                 =
                                                                         =
                                                      =20
> /usr/include/c++/v1/tr1/cstdlib
> /usr/include/c++/v1/cstdlib
> /usr/src/contrib/libc++/include/cstdlib
> /usr/src/contrib/libstdc++/include/tr1/cstdlib

Using a simpler program:

> # c++ main.cc
> main.cc:1:19: fatal error: cstdlib: No such file or directory
> compilation terminated.

"truss -f c++ main.cc" reports for cstdlib references:

> # truss -f c++ main.cc 2>&1 | grep cstdlib
> 95852: read(3,"#include <cstdlib>\n\n// Avoid n"...,1309) =3D 1309 =
(0x51d)
> 95852: =
lstat("/usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/include/cstdlib",0=
xffffffffffffba20) ERR#2 'No such file or directory'
> 95852: =
stat("/usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/include/cstdlib.gch=
",0xffffffffffffcbd8) ERR#2 'No such file or directory'
> 95852: =
openat(AT_FDCWD,"/usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/include/=
cstdlib",O_RDONLY|O_NOCTTY,00) ERR#2 'No such file or directory'
> 95852: =
lstat("/usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/include-fixed/cstd=
lib",0xffffffffffffba20) ERR#2 'No such file or directory'
> 95852: =
stat("/usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/include-fixed/cstdl=
ib.gch",0xffffffffffffcbd8) ERR#2 'No such file or directory'
> 95852: =
openat(AT_FDCWD,"/usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/include-=
fixed/cstdlib",O_RDONLY|O_NOCTTY,00) ERR#2 'No such file or directory'
> 95852: lstat("/usr/include/cstdlib",0xffffffffffffba20) ERR#2 'No such =
file or directory'
> 95852: =
stat("/usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/../../../../powerpc=
64-portbld-freebsd12.0/include/cstdlib.gch",0xffffffffffffcbd8) ERR#2 =
'No such file or directory'
> 95852: =
openat(AT_FDCWD,"/usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/../../..=
/../powerpc64-portbld-freebsd12.0/include/cstdlib",O_RDONLY|O_NOCTTY,00) =
ERR#2 'No such file or directory'
> 95852: read(4,"#include <cstdlib>\n\n// Avoid n"...,32768) =3D 1309 =
(0x51d)
> main.cc:1:19: fatal error: cstdlib: No such file or directory

So in finding no cstdlib c++ (g++) looks for each of:

> /usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/include/cstdlib
> /usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/include/cstdlib.gch
> /usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/include-fixed/cstdlib
> =
/usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/include-fixed/cstdlib.gch=

> /usr/include/cstdlib
> /usr/powerpc64-portbld-freebsd12.0/include/cstdlib.gch
> /usr/powerpc64-portbld-freebsd12.0/include/cstdlib

none of which match the file system. No trivially small number of =
symbolic links in the file system can cover making all the involved =
paths for various headers work (each "include" already exists and has =
files).

=3D=3D=3D
Mark Millard
markmi at dsl-only.net




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5D62C0E6-E6B7-42F5-B74B-8F555C154449>