diff options
author | Xi Ruoyao <xry111@mengyan1223.wang> | 2022-02-27 13:04:05 +0800 |
---|---|---|
committer | Xi Ruoyao <xry111@mengyan1223.wang> | 2022-02-27 23:36:55 +0800 |
commit | a4f63e494b2f26939615cf7e55f51029a763aef4 (patch) | |
tree | c61cab06f16f77d585bcbcd917f383f5d833c224 /chapter08/gcc.xml | |
parent | 83c258fce0de371938776aafe3341c34a20df8a8 (diff) |
remove adjusting.xml
Now adjusting.xml only serves as a historical reference, and a "snip
library" for gcc.xml. Put all relevant content into gcc.xml directly
and remove adjusting.xml. If someone needs a historical reference, he
can always get adjusting.xml in Git history.
Diffstat (limited to 'chapter08/gcc.xml')
-rw-r--r-- | chapter08/gcc.xml | 99 |
1 files changed, 33 insertions, 66 deletions
diff --git a/chapter08/gcc.xml b/chapter08/gcc.xml index cd3a9b9fe..4c62a8d17 100644 --- a/chapter08/gcc.xml +++ b/chapter08/gcc.xml @@ -197,29 +197,21 @@ rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/&gcc-version;/include-fixed/bits/</useri that compiling and linking will work as expected. We do this by performing some sanity checks:</para> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='a'])"/> +<screen><userinput>echo 'int main(){}' > dummy.c +cc dummy.c -v -Wl,--verbose &> dummy.log +readelf -l a.out | grep ': /lib'</userinput></screen> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='b'])"/> + <para>There should be no errors, + and the output of the last command will be (allowing for + platform-specific differences in the dynamic linker name):</para> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='c'])"/> +<screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='d'])"/> + <para>Now make sure that we're setup to use the correct start files:</para> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='e'])"/> +<screen><userinput>grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log</userinput></screen> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='f'])"/> + <para>The output of the last command should be:</para> <screen><computeroutput>/usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/crt1.o succeeded /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded @@ -232,15 +224,12 @@ rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/&gcc-version;/include-fixed/bits/</useri <filename>crt*.o</filename> files under the <filename class="directory">/usr/lib</filename> directory.</para> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='g'])"/> + <para>Verify that the compiler is searching for the correct header + files:</para> <screen><userinput>grep -B4 '^ /usr/include' dummy.log</userinput></screen> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='h'])"/> + <para>This command should return the following output:</para> <screen><computeroutput>#include <...> search starts here: /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/include @@ -251,17 +240,12 @@ rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/&gcc-version;/include-fixed/bits/</useri <para>Again, the directory named after your target triplet may be different than the above, depending on your system architecture.</para> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='i'])"/> + <para>Next, verify that the new linker is being used with the correct search paths:</para> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='j'])"/> +<screen><userinput>grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'</userinput></screen> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='k'])"/> + <para>References to paths that have components with '-linux-gnu' should + be ignored, but otherwise the output of the last command should be:</para> <screen><computeroutput>SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64") SEARCH_DIR("/usr/local/lib64") @@ -284,49 +268,32 @@ SEARCH_DIR("/usr/local/lib") SEARCH_DIR("/lib") SEARCH_DIR("/usr/lib");</computeroutput></screen> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='l'])"/> + <para>Next make sure that we're using the correct libc:</para> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='m'])"/> +<screen><userinput>grep "/lib.*/libc.so.6 " dummy.log</userinput></screen> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='n'])"/> + <para>The output of the last command should be:</para> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='o'])"/> +<screen><computeroutput>attempt to open /usr/lib/libc.so.6 succeeded</computeroutput></screen> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='p'])"/> + <para>Make sure GCC is using the correct dynamic linker:</para> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='q'])"/> +<screen><userinput>grep found dummy.log</userinput></screen> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='r'])"/> + <para>The output of the last command should be (allowing for + platform-specific differences in dynamic linker name):</para> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='s'])"/> +<screen><computeroutput>found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2</computeroutput></screen> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='t'])"/> + <para>If the output does not appear as shown above or is not received + at all, then something is seriously wrong. Investigate and retrace the + steps to find out where the problem is and correct it. <!--The most likely + reason is that something went wrong with the specs file adjustment.--> Any + issues will need to be resolved before continuing with the process.</para> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='u'])"/> + <para>Once everything is working correctly, clean up the test files:</para> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="adjusting.xml" - xpointer="xpointer(//*[@os='v'])"/> +<screen><userinput>rm -v dummy.c a.out dummy.log</userinput></screen> <para>Finally, move a misplaced file:</para> |