crtbegin.o/crtend.o search path

Hi,
Due to some non-technical issues, I have to work with some very old
Linux systems, mostly CentOS 6 installations, some are even older
which have CentOS 5 installations. I'm trying to create a
*self-hosting* toolchain with
clang/libc++/libc++abi/libunwind/compiler-rt/binutils, so I can
develop my applications with C++14 language standard and other nice
features provided by clang.

Note, I don't want to build libc myself, too much effort needed. I
just want a nice C++ development environment on top of the system
libc.

My steps are like this:
* Build gcc-5.2 with the system gcc and install it to /opt/extra (done)
* Verify the above gcc-5.2 installation (done)
* Build clang-3.7 with the installed gcc-5.2 and install it to
/opt/stage1 (done)
* Verify the clang-3.7 installation after removing the system gcc (fail)
* Rebuild clang-3.7 with clang-3.7 installed in /opt/stage1 (not yet tried)

The installed clang-3.7 cannot link a simple executable because it
failed to find crtbegin.o & crtend.o.

llvm, cfe, clang-tools-extra, compiler-rt, libcxx, libcxxabi,
libunwind and lld are built together with the cmake build system.
cmake command line options are:
CC=/my/gcc/wrapper CXX=/my/g++/wrapper \
    cmake -DCMAKE_INSTALL_PREFIX=/opt/stage1 \
    -DCMAKE_BUILD_TYPE=Release \
    -DLLVM_TARGETS_TO_BUILD=host \
    -DLLVM_ENABLE_EH=ON \
    -DLLVM_ENABLE_RTTI=ON \
    -DLLVM_BINUTILS_INCDIR=/opt/extra/include \
    -DPYTHON_EXECUTABLE=/opt/extra/bin/python \
    ../llvm

The two gcc/g++ wrappers are written myself, they are used to add some
extra -Wl,-rpath options to the linker, so that the ld.so can load the
right libstdc++.so.6/libgcc_s.so.1

Because I want a self-hosting toolchain, I don't want clang to search
the system path (/usr/lib) for crtbegin.o/crtend.o.

I have two questions:
1. How can I tell clang that these two files are under directory
/opt/extra ? I don't mind write a simple patch to clang, of course,
simpler solutions like build time options or command line options are
much better.
2. Since crtbegin.o/crtend.o are part of a compiler, why don't clang
provide one itself ? Google results showed that these two files seem
to be quite simple, are there any patent/copyright issues related ?

I have two questions:
1. How can I tell clang that these two files are under directory
/opt/extra ? I don't mind write a simple patch to clang, of course,
simpler solutions like build time options or command line options are
much better.
2. Since crtbegin.o/crtend.o are part of a compiler, why don't clang
provide one itself ? Google results showed that these two files seem
to be quite simple, are there any patent/copyright issues related ?

1. Trying adding "-B/opt/extra" into your clang invocation.
2. The crt begin/end files are considered part of the standard library, not
the compiler.

I have two questions:

1. How can I tell clang that these two files are under directory
/opt/extra ? I don't mind write a simple patch to clang, of course,
simpler solutions like build time options or command line options are
much better.
2. Since crtbegin.o/crtend.o are part of a compiler, why don't clang
provide one itself ? Google results showed that these two files seem
to be quite simple, are there any patent/copyright issues related ?

1. Trying adding "-B/opt/extra" into your clang invocation.

Haven't tried this solution, I'll try it tonight. I figured out one myself:
add -DGCC_INSTALL_PREFIX=/opt/extra to cmake will fix this problem. I'm not
sure whether it's a hack or standard.

2. The crt begin/end files are considered part of the standard library,
not the compiler.

I don't think so, if it's part of the standard, why every GCC installation
has a copy of crtbegin/crtend ? I also tried musl libc (www.musl-libc.org)
it installs files like crt1.o, crti.o, crtn.o but *not* crtbegin.o/crtend.o