diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2019-11-19 17:35:47 +0300 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2019-11-19 17:35:47 +0300 |
commit | 03bebac19e6fef19299d7326d3ee41f8a7dd1316 (patch) | |
tree | bb413d22ada331790f08b7b9a592e5ab95cd8918 /debian/README.cross | |
parent | 94a19f31b81e9e7e295414fe2ad2302e0db25a08 (diff) | |
parent | 8f6c4b0033c72f8ac14694c419a99458339dd6a9 (diff) | |
download | gcc-9-03bebac19e6fef19299d7326d3ee41f8a7dd1316.tar.gz |
Merge tag 'debian/9.2.1-19'
Diffstat (limited to 'debian/README.cross')
-rw-r--r-- | debian/README.cross | 160 |
1 files changed, 19 insertions, 141 deletions
diff --git a/debian/README.cross b/debian/README.cross index a91829e..ccf245b 100644 --- a/debian/README.cross +++ b/debian/README.cross @@ -1,144 +1,22 @@ Building cross-compiler Debian packages --------------------------------------- -It is possible to build C and C++ cross compilers and support libraries -from gcc-4.0 source package. This document describes how to do so. -Cross-compiler build support is not perfect yet, please send fixes -and improvements to debian-gcc@lists.debian.org and -debian-embedded@lists.debian.org - -Before you start, you should probably check available pre-built -cross-toolchain debs. Available at http://www.emdebian.org - -Old patches could be reached at - http://zigzag.lvk.cs.msu.su/~nikita/debian/ - -If they are no longer there, you may check EmDebian web site at - http://www.emdebian.org/ -or ask debian-embedded@lists.debian.org for newer location. - -Please check http://bugs.debian.org/391445 if you are about building -gcc-4.3 or above. - -Most of them has been merged with gcc debian sources. - -0. What's wrong with toolchain-source approach - -Package toolchain-source contains sources for binutils and gcc, as well as -some support scripts to build cross-compiler packages. They seem to work. - -However, there is one fundamental problem with this approach. -Gcc package is actively maintained and frequently updated. These updates -do contain bug fixes and improvements, especially for non-x86 architectures. -Cross-compilers built using toolchain-source will not get those fixes unless -toolchain-source package is updated after each binutils and gcc update. -The later is not hapenning in real life. For example, toolchain-source -was upgraded from gcc-3.2 to gcc-3.3 half a year later than gcc-3.3 became -Debian default compiler. - -Keeping toolchain-source package up-to-date requires lots of work, and seems -to be a waste of time. It is much better to build cross-compilers directly -from gcc source package. - - -1. What is needed to build a cross-compiler from gcc-4.3 source - -1.1. dpkg-cross package - -Dpkg-cross package contains several tools to manage cross-compile environment. - -It can convert native debian library and lib-dev packages for the target -architecture to binary-all packages that keep libraries and headers under -/usr/$(TARGET)/. - -Also it contains helper tools for cross-compiling debian packages. Some of -these tools are used while building libgcc1 and libstdc++ library packages. -The resulting library packages follow the same convensions as library packages -converted by dpkg-cross. - -Currently, at least version 1.18 of dpkg-cross is needed for cross-gcc -package build. Version 1.32 of dpkg-cross is needed in order to build gcc-4.3. - -1.2. cross-binutils for the target - -You need cross-binutils for your target to build cross-compiler. -Binutils-multiarch package will not work because it does not provide cross- -assemblers. - -If you don't want to use pre-built cross-binutils packages, you may build -your own from binutils debian source package, using patches posted to -bug #231707. Please use the latest of patch versions available there. - -Alternatively, you may use toolchain-source package to build cross-binutils -(but in this case you will probably also want to use toolchain-source -to build cross-compiler itself). However, multilib'ed cross-compilers may -not build or work with these binutils. - -1.3. libc for target - -You also need libc library and development packages for the target -architecture installed. - -To get those, download linux-kernel-headers, libc6, and libc6-dev binary -debs for your target, convert those using dpkg-cross -b, and install -resulting -arch-cross debs. Consult dpkg-cross manual page for more -information. - -Building with/for alternative libc's is not supported yet (but this is in -TODO). - -Note that if you plan to use your cross-toolchain to develop kernel drivers -or similar low-level things, you will probably also need kernel headers -for the exact kernel version that your target hardware uses. - - -2. Building cross-compiler packages - -Get gcc-4.3 source package. - -Unpack it using dpkg-source -x, and cd to the package directory. - -Set GCC_TARGET environment variable to the target architectire name. Note -that currently you should use debian architecture name (i.e 'powerpc' or 'arm'), -not GNU system type (i.e. 'powerpc-linux' or 'arm-linux'). Setting GCC_TARGET -to GNU system type will cause cross-compiler build to fail. - -Instead of setting GCC_TARGET, target architecture name may be put into -debian/target file. If both GCC_TARGET is defined and debian/target file -exists, GCC_TARGET is used. - -Run debian/rules control. This will change debian/control file, -adjusting build-depends. By default, the packages will not depend on the -system -base package. A variable DEB_CROSS_INDEPENDENT has been merged with DEB_CROSS variable. - -You can then build with either - -$ GCC_TARGET=[arch] dpkg-buildpackage -rfakeroot - -3. Using crosshurd - -Jeff Bailey <jbailey@raspberryginger.com> suggests alternate way to setup -environment to build cross-compiler, using 'crosshurd' package. -Crosshurd is like debootstrap but cross-arch, and works on the Hurd, -Linux and FreeBSD. (The name is historical). - -If you setup your environment with crosshurd, you will need to fix symlinks -in lib and usr/lib to be relative instead of absolute. For example: - -lrwxrwxrwx 1 root root 20 2004-05-06 23:02 libcom_err.so -> /lib/libcom_err.so.2 - -Needs to be changed to: - -lrwxrwxrwx 1 root root 20 2004-05-06 23:02 libcom_err.so -> ../../lib/libcom_err.so.2 - -Also, if you choose this method, set the environment variable 'with_sysroot' -to point to the ABSOLUTE PATH where the crosshurd was done. - -Note however that build-depends of cross-gcc and dependencies in generated -libgcc1 and libstdc++ packages assume that you use dpkg-cross to set up -your environment, and may be wrong or incomplete if you use alternate methods. -But probably you don't care. - --- -Nikita V. Youshchenko <yoush@debian.org> - Jun 2004 -Hector Oron Martinez <hector.oron@gmail.com> - Oct 2006 +The packaging for cross toolchains is now in the archive, including +all frontends, and targeting all release and ports architectures. + +Cross toolchains are built from the following source packages: + + - binutils + - cross-toolchain-base + - cross-toolchain-base-ports + - gcc-7-cross + - gcc-7-cross-ports + - gcc-8-cross + - gcc-8-cross-ports + - gcc-9-cross + - gcc-9-cross-ports + - gcc-defaults + - gcc-defaults-ports + +Issues about the cross toolchains should be filed for one of the +above source packages. |