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
>
> 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
> /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) = 1309 (0x51d)
> 95852: lstat("/usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/include/cstdlib",0xffffffffffffba20) 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/cstdlib",0xffffffffffffba20) ERR#2 'No such file or directory'
> 95852: stat("/usr/lib/gcc/powerpc64-portbld-freebsd12.0/5.4.0/include-fixed/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-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/../../../../powerpc64-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) = 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).
===
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>
