Changeset 964103c
- Timestamp:
- 03/02/2022 01:15:18 PM (2 years ago)
- Branches:
- xry111/clfs-ng
- Children:
- 727617d
- Parents:
- a5da281 (diff), 6cad449 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 2 deleted
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
chapter01/changelog.xml
ra5da281 r964103c 42 42 43 43 <listitem> 44 <para>2022-03-02</para> 45 <itemizedlist> 46 <listitem> 47 <para>[xry111] - Build libstdc++ in GCC pass 2, and remove the 48 seperate libstdc++ pass 2.</para> 49 </listitem> 50 <listitem> 51 <para>[xry111] - Remove unneeded 52 <parameter>--enable-64bit</parameter> for tcl.</para> 53 </listitem> 54 </itemizedlist> 55 </listitem> 56 57 <listitem> 44 58 <para>2022-03-01</para> 45 59 <itemizedlist> -
chapter05/libstdc++.xml
ra5da281 r964103c 6 6 ]> 7 7 8 <sect1 id="ch-tools-libstdcpp -pass1" role="wrap">9 <?dbhtml filename="gcc-libstdc++ -pass1.html"?>8 <sect1 id="ch-tools-libstdcpp" role="wrap"> 9 <?dbhtml filename="gcc-libstdc++.html"?> 10 10 11 11 <sect1info condition="script"> … … 15 15 </sect1info> 16 16 17 <title>Libstdc++ from GCC-&gcc-version; , Pass 1</title>17 <title>Libstdc++ from GCC-&gcc-version;</title> 18 18 19 <indexterm zone="ch-tools-libstdcpp -pass1">19 <indexterm zone="ch-tools-libstdcpp"> 20 20 <primary sortas="a-GCC">GCC</primary> 21 21 <secondary>tools, libstdc++ pass 1</secondary> -
chapter06/gcc-pass2.xml
ra5da281 r964103c 63 63 -i.orig gcc/config/i386/t-linux64</userinput></screen> 64 64 65 <!-- 66 <para>Fix an issue with GCC-10.1 when building with a cross 67 compiler:</para> 65 <!-- https://gcc.gnu.org/PR100017 --> 66 <para>Fix an issue causing failure cross-compiling libstdc++:</para> 68 67 69 <screen><userinput remap="pre">patch -Np1 -i ../&gcc-cross-patch;</userinput></screen> 70 --> 68 <screen><userinput remap="pre">sed 's/gnu++17/& -nostdinc++/' \ 69 -i libstdc++-v3/src/c++17/Makefile.in</userinput></screen> 70 71 <para>Override the building rule of libgcc and libstdc++ headers, to 72 allow building these libraries with POSIX threads support:</para> 73 74 <screen><userinput remap="pre">sed '/thread_header =/s/@.*@/gthr-posix.h/' \ 75 -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in</userinput></screen> 76 71 77 <para>Create a separate build directory again:</para> 72 78 73 79 <screen><userinput remap="pre">mkdir -v build 74 80 cd build</userinput></screen> 75 76 <para>Create a symlink that allows libgcc to be built with posix threads77 support:</para>78 79 <screen><userinput remap="pre">mkdir -pv $LFS_TGT/libgcc80 ln -s ../../../libgcc/gthr-posix.h $LFS_TGT/libgcc/gthr-default.h</userinput></screen>81 81 82 82 <para>Before starting to build GCC, remember to unset any environment … … 88 88 --build=$(../config.guess) \ 89 89 --host=$LFS_TGT \ 90 --target=$LFS_TGT \ 91 LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \ 90 92 --prefix=/usr \ 91 CC_FOR_TARGET=$LFS_TGT-gcc \92 93 --with-build-sysroot=$LFS \ 93 94 --enable-initfini-array \ … … 100 101 --disable-libssp \ 101 102 --disable-libvtv \ 102 --disable-libstdcxx \103 103 --enable-languages=c,c++</userinput></screen> 104 104 … … 107 107 108 108 <varlistentry> 109 <term><parameter>- with-build-sysroot=$LFS</parameter></term>109 <term><parameter>--with-build-sysroot=$LFS</parameter></term> 110 110 <listitem> 111 111 <para>Normally, using <parameter>--host</parameter> ensures that … … 116 116 needed to have them find the needed files in <filename 117 117 class="directory">$LFS</filename>, and not on the host.</para> 118 </listitem> 119 </varlistentry> 120 121 <varlistentry> 122 <term><parameter>--target=$LFS_TGT</parameter></term> 123 <listitem> 124 <para>As we are cross-compiling GCC, it's impossible to build 125 target libraries (<filename class="libraryfile">libgcc</filename> 126 and <filename class="libraryfile">libstdc++</filename>) with the 127 compiled GCC binaries because these binaries won't run on the 128 host distro. GCC building system will attempt to use the 129 C and C++ compilers on the host distro as a workaround by default. 130 It's not supported to build GCC target libraries with a different 131 version of GCC, so using host compilers may cause building 132 failure. This parameter ensures to build the libraries with GCC 133 pass 1 and prevent the issue.</para> 134 </listitem> 135 </varlistentry> 136 137 <varlistentry> 138 <term><parameter>LDFLAGS_FOR_TARGET=...</parameter></term> 139 <listitem> 140 <para>Allow <filename class="libraryfile">libstdc++</filename> to 141 use shared <filename class="libraryfile">libgcc</filename> being 142 built in this pass, instead of the static version built in GCC 143 pass 1. This is needed for supporting C++ exception 144 handling.</para> 118 145 </listitem> 119 146 </varlistentry> -
chapter07/chapter07.xml
ra5da281 r964103c 18 18 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="creatingdirs.xml"/> 19 19 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="createfiles.xml"/> 20 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libstdc++-pass2.xml"/>21 20 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gettext.xml"/> 22 21 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bison.xml"/> -
chapter08/gcc.xml
ra5da281 r964103c 196 196 some sanity checks:</para> 197 197 198 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 199 href="adjusting.xml" 200 xpointer="xpointer(//*[@os='a'])"/> 201 202 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 203 href="adjusting.xml" 204 xpointer="xpointer(//*[@os='b'])"/> 205 206 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 207 href="adjusting.xml" 208 xpointer="xpointer(//*[@os='c'])"/> 209 210 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 211 href="adjusting.xml" 212 xpointer="xpointer(//*[@os='d'])"/> 213 214 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 215 href="adjusting.xml" 216 xpointer="xpointer(//*[@os='e'])"/> 217 218 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 219 href="adjusting.xml" 220 xpointer="xpointer(//*[@os='f'])"/> 198 <screen><userinput>echo 'int main(){}' > dummy.c 199 cc dummy.c -v -Wl,--verbose &> dummy.log 200 readelf -l a.out | grep ': /lib'</userinput></screen> 201 202 <para>There should be no errors, 203 and the output of the last command will be (allowing for 204 platform-specific differences in the dynamic linker name):</para> 205 206 <screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen> 207 208 <para>Now make sure that we're setup to use the correct start files:</para> 209 210 <screen><userinput>grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log</userinput></screen> 211 212 <para>The output of the last command should be:</para> 221 213 222 214 <screen><computeroutput>/usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/crt1.o succeeded … … 231 223 <filename class="directory">/usr/lib</filename> directory.</para> 232 224 233 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 234 href="adjusting.xml" 235 xpointer="xpointer(//*[@os='g'])"/> 225 <para>Verify that the compiler is searching for the correct header 226 files:</para> 236 227 237 228 <screen><userinput>grep -B4 '^ /usr/include' dummy.log</userinput></screen> 238 229 239 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 240 href="adjusting.xml" 241 xpointer="xpointer(//*[@os='h'])"/> 230 <para>This command should return the following output:</para> 242 231 243 232 <screen><computeroutput>#include <...> search starts here: … … 250 239 different than the above, depending on your system architecture.</para> 251 240 252 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 253 href="adjusting.xml" 254 xpointer="xpointer(//*[@os='i'])"/> 255 256 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 257 href="adjusting.xml" 258 xpointer="xpointer(//*[@os='j'])"/> 259 260 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 261 href="adjusting.xml" 262 xpointer="xpointer(//*[@os='k'])"/> 241 <para>Next, verify that the new linker is being used with the correct search paths:</para> 242 243 <screen><userinput>grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'</userinput></screen> 244 245 <para>References to paths that have components with '-linux-gnu' should 246 be ignored, but otherwise the output of the last command should be:</para> 263 247 264 248 <screen><computeroutput>SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64") … … 283 267 SEARCH_DIR("/usr/lib");</computeroutput></screen> 284 268 285 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 286 href="adjusting.xml" 287 xpointer="xpointer(//*[@os='l'])"/> 288 289 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 290 href="adjusting.xml" 291 xpointer="xpointer(//*[@os='m'])"/> 292 293 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 294 href="adjusting.xml" 295 xpointer="xpointer(//*[@os='n'])"/> 296 297 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 298 href="adjusting.xml" 299 xpointer="xpointer(//*[@os='o'])"/> 300 301 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 302 href="adjusting.xml" 303 xpointer="xpointer(//*[@os='p'])"/> 304 305 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 306 href="adjusting.xml" 307 xpointer="xpointer(//*[@os='q'])"/> 308 309 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 310 href="adjusting.xml" 311 xpointer="xpointer(//*[@os='r'])"/> 312 313 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 314 href="adjusting.xml" 315 xpointer="xpointer(//*[@os='s'])"/> 316 317 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 318 href="adjusting.xml" 319 xpointer="xpointer(//*[@os='t'])"/> 320 321 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 322 href="adjusting.xml" 323 xpointer="xpointer(//*[@os='u'])"/> 324 325 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 326 href="adjusting.xml" 327 xpointer="xpointer(//*[@os='v'])"/> 269 <para>Next make sure that we're using the correct libc:</para> 270 271 <screen><userinput>grep "/lib.*/libc.so.6 " dummy.log</userinput></screen> 272 273 <para>The output of the last command should be:</para> 274 275 <screen><computeroutput>attempt to open /usr/lib/libc.so.6 succeeded</computeroutput></screen> 276 277 <para>Make sure GCC is using the correct dynamic linker:</para> 278 279 <screen><userinput>grep found dummy.log</userinput></screen> 280 281 <para>The output of the last command should be (allowing for 282 platform-specific differences in dynamic linker name):</para> 283 284 <screen><computeroutput>found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2</computeroutput></screen> 285 286 <para>If the output does not appear as shown above or is not received 287 at all, then something is seriously wrong. Investigate and retrace the 288 steps to find out where the problem is and correct it. <!--The most likely 289 reason is that something went wrong with the specs file adjustment.--> Any 290 issues will need to be resolved before continuing with the process.</para> 291 292 <para>Once everything is working correctly, clean up the test files:</para> 293 294 <screen><userinput>rm -v dummy.c a.out dummy.log</userinput></screen> 328 295 329 296 <para>Finally, move a misplaced file:</para> -
chapter08/iproute2.xml
ra5da281 r964103c 62 62 <para>Compile the package:</para> 63 63 64 <screen><userinput remap="make">make </userinput></screen>64 <screen><userinput remap="make">make NETNS_RUN_DIR=/run/netns</userinput></screen> 65 65 66 66 <para>This package does not have a working test suite.</para> -
chapter08/tcl.xml
ra5da281 r964103c 64 64 cd unix 65 65 ./configure --prefix=/usr \ 66 --mandir=/usr/share/man \ 67 $([ "$(uname -m)" = x86_64 ] && echo --enable-64bit)</userinput></screen> 68 69 <variablelist> 70 <title>The meaning of the configure options:</title> 71 72 <varlistentry> 73 <term><parameter>$([ "$(uname -m)" = x86_64 ] && echo --enable-64bit)</parameter></term> 74 <listitem> 75 <para>The construct <parameter>$(<shell command>)</parameter> 76 is replaced by the output of the shell command. Here this output is 77 empty if running on a 32 bit machine, and is 78 <parameter>--enable-64bit</parameter> if running on a 64 bit machine. 79 </para> 80 </listitem> 81 </varlistentry> 82 83 </variablelist> 66 --mandir=/usr/share/man</userinput></screen> 84 67 85 68 <para>Build the package:</para>
Note:
See TracChangeset
for help on using the changeset viewer.