Change -isystem to -idirafter in "adjusting". Fix most of #4641.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@11819 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
Pierre Labastie 2020-04-20 12:50:49 +00:00
parent 0b403eb328
commit afc6823ff1
3 changed files with 30 additions and 9 deletions

View File

@ -42,6 +42,20 @@
<listitem revision="sysv"> or <listitem revision="systemd"> as <listitem revision="sysv"> or <listitem revision="systemd"> as
appropriate for the entry or if needed the entire day's listitem. appropriate for the entry or if needed the entire day's listitem.
--> -->
<listitem>
<para>2020-04-20</para>
<itemizedlist>
<listitem>
<para>[pierre] - Change -isystem to -idirafter in "Adjusting the
toolchain". This allows to search g++ private headers before
the public ones, which is the normal search order, with the
drawback that it includes the headers in /tools if they exist
in both /usr and /tools. Fix most of
<ulink url="&lfs-ticket-root;4641">#4641</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem> <listitem>
<para>2020-04-19</para> <para>2020-04-19</para>
<itemizedlist> <itemizedlist>

View File

@ -24,15 +24,17 @@ mv -v /tools/$(uname -m)-pc-linux-gnu/bin/{ld,ld-old}
mv -v /tools/bin/{ld-new,ld} mv -v /tools/bin/{ld-new,ld}
ln -sv /tools/bin/ld /tools/$(uname -m)-pc-linux-gnu/bin/ld</userinput></screen> ln -sv /tools/bin/ld /tools/$(uname -m)-pc-linux-gnu/bin/ld</userinput></screen>
<para>Next, amend the GCC specs file so that it points to the new <para>the next command amends the GCC specs file to achieve three goals:
dynamic linker. Simply deleting all instances of <quote>/tools</quote> should first point GCC to the new dynamic linker. Simply deleting all instances of
leave us with the correct path to the dynamic linker. Also adjust the specs file <quote>/tools</quote> should leave us with the correct path to the dynamic
so that GCC knows where to find the correct headers and Glibc start files. linker. Second, let GCC know where to find the Glibc start files. Third,
add the /usr/include directory at the end of the default search path, so
that header files added in chapter 6 are found.
A <command>sed</command> command accomplishes this:</para> A <command>sed</command> command accomplishes this:</para>
<screen><userinput>gcc -dumpspecs | sed -e 's@/tools@@g' \ <screen><userinput>gcc -dumpspecs | sed -e 's@/tools@@g' \
-e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \ -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
-e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' &gt; \ -e '/\*cpp:/{n;s@$@ -idirafter /usr/include@}' &gt; \
`dirname $(gcc --print-libgcc-file-name)`/specs</userinput></screen> `dirname $(gcc --print-libgcc-file-name)`/specs</userinput></screen>
<para>It is a good idea to visually inspect the specs file to verify the <para>It is a good idea to visually inspect the specs file to verify the
@ -72,13 +74,18 @@ readelf -l a.out | grep ': /lib'</userinput></screen>
<para os="g">Verify that the compiler is searching for the correct header <para os="g">Verify that the compiler is searching for the correct header
files:</para> files:</para>
<screen><userinput>grep -B1 '^ /usr/include' dummy.log</userinput></screen> <screen><userinput>grep -B4 '^ /usr/include' dummy.log</userinput></screen>
<para os="h">This command should return the following output:</para> <para os="h">This command should return the following output:</para>
<screen><computeroutput>#include &lt;...&gt; search starts here: <screen><computeroutput>#include &lt;...&gt; search starts here:
/tools/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/include
/tools/include
/tools/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/include-fixed
/usr/include</computeroutput></screen> /usr/include</computeroutput></screen>
<note><para>On a 32 bit system, x86_64 is replaced with i686.</para></note>
<para os="i">Next, verify that the new linker is being used with the correct search paths:</para> <para os="i">Next, verify that the new linker is being used with the correct search paths:</para>
<screen os="j"><userinput>grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'</userinput></screen> <screen os="j"><userinput>grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'</userinput></screen>

View File

@ -1,13 +1,13 @@
<!ENTITY version "SVN-20200419"> <!ENTITY version "SVN-20200420">
<!ENTITY short-version "svn"> <!-- Used below in &blfs-book; <!ENTITY short-version "svn"> <!-- Used below in &blfs-book;
Change to x.y for release but not -rc releases --> Change to x.y for release but not -rc releases -->
<!ENTITY generic-version "development"> <!-- Use "development" or "x.y[-pre{x}]" --> <!ENTITY generic-version "development"> <!-- Use "development" or "x.y[-pre{x}]" -->
<!ENTITY versiond "20200419-systemd"> <!ENTITY versiond "20200420-systemd">
<!ENTITY short-versiond "systemd"> <!ENTITY short-versiond "systemd">
<!ENTITY generic-versiond "systemd"> <!ENTITY generic-versiond "systemd">
<!ENTITY releasedate "April 19th, 2020"> <!ENTITY releasedate "April 20th, 2020">
<!ENTITY copyrightdate "1999-2020"><!-- jhalfs needs a literal dash, not &ndash; --> <!ENTITY copyrightdate "1999-2020"><!-- jhalfs needs a literal dash, not &ndash; -->