102621ce6d
Convert to markdown because the previous style was too confusing. A lot of this is ancient; mark it as such. Fold in comments from Peter Lai about working/non-working gcc versions.
89 lines
2.8 KiB
Text
89 lines
2.8 KiB
Text
$NetBSD: README.Linux,v 1.10 2022/04/07 15:16:55 gdt Exp $
|
|
|
|
# General
|
|
|
|
Generally, bootstrapping on GNU/Linux is expected to Just Work with
|
|
gcc.
|
|
|
|
# Compilers
|
|
|
|
## gcc
|
|
|
|
gcc is the standard approach.
|
|
|
|
As of 2022 it has been reported that systems with gcc 4.8 (e.g. RHEL7)
|
|
do not bootstrap, but that gcc7 (AWS-flavored RHEL7) and gcc8 (RHEL8) succeed.
|
|
|
|
## clang
|
|
|
|
There are no reports of success or failure with clang.
|
|
|
|
## icc
|
|
|
|
Long ago, it was reported that icc (Intel C++ Compiler) 8.0 and 8.1
|
|
have been tested on i386. See the old section at the end.
|
|
|
|
# Debian and derivatives
|
|
|
|
For Debian and derivatives such as Ubuntu the following packages should be
|
|
installed prior to attempting bootstrap:
|
|
|
|
apt-get install cvs libncurses5 libncurses5-dev gcc g++ zlib1g-dev \
|
|
zlib1g libssl-dev libudev-dev
|
|
|
|
# RedHat and derivatives
|
|
|
|
## Old, undated, information
|
|
|
|
Some versions of Linux (RHEL3 Update 2 for i386 for example) have a
|
|
/usr/lib/libacl.la libtool archive file that lists /lib/libattr.la as a
|
|
dependency. However, libattr.la does not exist in /lib/libattr.la. If
|
|
this is the case, the bootstrap will fail with
|
|
|
|
grep: /lib/libattr.la: No such file or directory
|
|
/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/.tools/bin/sed: can't read /lib/libattr.la: No such file or directory
|
|
libtool: link: `/lib/libattr.la' is not a valid libtool archive
|
|
|
|
The solution is to copy /usr/lib/libattr.la to /lib/libattr.la with:
|
|
|
|
cp -p /usr/lib/libattr.la /lib
|
|
|
|
# General old, undated information
|
|
|
|
## Details of using icc
|
|
|
|
To bootstrap using icc, assuming the default icc installation
|
|
directory:
|
|
|
|
env CC=/opt/intel_cc_80/bin/icc LDFLAGS=-static-libcxa \
|
|
ac_cv___attribute__=yes ./bootstrap
|
|
|
|
note: icc 8.1 needs the `-i-static' argument instead of
|
|
-static-libcxa.
|
|
|
|
icc supports __attribute__, but the GNU configure test uses a nested
|
|
function, which icc does not support. #undef'ing __attribute__ has the
|
|
unfortunate side-effect of breaking many of the Linux header files, which
|
|
cannot be compiled properly without __attribute__. The test must be
|
|
overridden so that __attribute__ is assumed supported by the compiler.
|
|
|
|
After bootstrapping, you should set PKGSRC_COMPILER in mk.conf:
|
|
|
|
PKGSRC_COMPILER=icc
|
|
|
|
The default installation directory for icc is /opt/intel_cc_80, which
|
|
is also the pkgsrc default. If you have installed it into a different
|
|
directory, set ICCBASE in mk.conf:
|
|
|
|
ICCBASE=/opt/icc
|
|
|
|
pkgsrc uses the static linking method of the runtime libraries
|
|
provided by icc, so binaries can be run on other systems which do not
|
|
have the shared libraries installed.
|
|
|
|
Libtool, however, extracts a list of libraries from the ld(1) command
|
|
run when linking a C++ shared library and records it, throwing away
|
|
the -Bstatic and -Bdynamic options interspersed between the libraries.
|
|
This means that libtool-linked C++ shared libraries will have a
|
|
runtime dependency on the icc libraries until this is fixed in
|
|
libtool.
|