From b6646310e875b63fb33b27e9035bf1fda15288a7 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 10 Dec 2004 21:55:05 +0000 Subject: Dan Fandrich extended the cross compile section and corrected spelling errors --- docs/INSTALL | 137 ++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 88 insertions(+), 49 deletions(-) (limited to 'docs') diff --git a/docs/INSTALL b/docs/INSTALL index 1d6386089..c904fe6bd 100644 --- a/docs/INSTALL +++ b/docs/INSTALL @@ -102,7 +102,7 @@ UNIX CC=cc ./configure or - env Cc=cc ./configure + env CC=cc ./configure To force a static library compile, disable the shared library creation by running configure like: @@ -363,9 +363,9 @@ VMS +----+------------+-------------+---+ With the Ctrl-bits an application can tell if part or the whole message has - allready been printed from the program, DCL doesn't need to print it again. + already been printed from the program, DCL doesn't need to print it again. - Facility - basicaly the program ID. A code assigned to the program + Facility - basically the program ID. A code assigned to the program the name can be fetched from external or internal message libraries Errorcode - the errodes assigned by the application Sev. - severity: Even = error, off = non error @@ -397,7 +397,7 @@ QNX === (This section was graciously brought to us by David Bentham) - As QNX is targetted for resource constrained environments, the QNX headers + As QNX is targeted for resource constrained environments, the QNX headers set conservative limits. This includes the FD_SETSIZE macro, set by default to 32. Socket descriptors returned within the CURL library may exceed this, resulting in memory faults/SIGSEGV crashes when passed into select(..) @@ -407,44 +407,6 @@ QNX libcurl, by overriding CFLAGS during configure, example # configure CFLAGS='-DFD_SETSIZE=64 -g -O2' -CROSS COMPILE -============= - - (This section was graciously brought to us by Jim Duey, 23-oct-2001) - - Download and unpack the cURL package. Version should be 7.9.1 or later. - - 'cd' to the new directory. (ie. curl-7.9.1-pre4) - - Set environment variables to point to the cross-compile toolchain and call - configure with any options you need. Be sure and specify the '--host' and - '--build' parameters at configuration time. The following script is an - example of cross-compiling for the IBM 405GP PowerPC processor using the - toolchain from MonteVista for Hardhat Linux. - - (begin script) - - #! /bin/sh - - export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin - export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include" - export AR=ppc_405-ar - export AS=ppc_405-as - export LD=ppc_405-ld - export RANLIB=ppc_405-ranlib - export CC=ppc_405-gcc - export NM=ppc_405-nm - - configure --target=powerpc-hardhat-linux \ - --host=powerpc-hardhat-linux \ - --build=i586-pc-linux-gnu \ - --prefix=/opt/hardhat/devkit/ppc/405/target/usr/local \ - --exec-prefix=/usr/local - - (end script) - - The '--prefix' parameter specifies where cURL will be installed. If - 'configure' completes successfully, do 'make' and 'make install' as usual. RISC OS ======= @@ -488,31 +450,107 @@ NetWare - gnu make and awk running on the platform you compile on; native Win32 versions can be downloaded from: http://www.gknw.com/development/prgtools/ - - recent Novell LibC SDK availabable from: + - recent Novell LibC SDK available from: http://developer.novell.com/ndk/libc.htm - optional zlib sources (at the moment only dynamic linking with zlib.imp); - sources with NetWare Makefile can be optained from: + sources with NetWare Makefile can be obtained from: http://www.gknw.com/mirror/zlib/ Set a search path to your compiler, linker and tools; if you want to have zlib support then set the environment var ZLIB_PATH pointing to your zlib sources, on Linux make sure the var OSTYPE contains the string 'linux'; and finally type 'make netware' from the top source directory... - I found on some Linux systems (RH9) that OS detection didnt work although + I found on some Linux systems (RH9) that OS detection didnlt work although a 'set | grep OSTYPE' shows the var present and set; I simply overwrote it with 'OSTYPE=linux-rh9-gnu' and the detection in the Makefile worked...; other options are currently not supported, although partly prepared. The Ares lib builds arlready fine, and both test tools work fine at least - when build with CodeWarrior...; dont know yet why they fail when build with + when build with CodeWarrior...; don't know yet why they fail when build with gcc though; if you want to compile with Ares support then set an env var - WITH_ARES=1; I've not tested yet including libcares into curl. + WITH_ARES=1; I've not tested yet including libares into curl. Any help in testing appreciated! - Buils automatically created 4 times a day from current CVS are here: + Builds automatically created 4 times a day from current CVS are here: http://www.gknw.com/mirror/curl/autobuilds/ - the status of these buids can be viewed at the autobuild table: + the status of these builds can be viewed at the autobuild table: http://curl.haxx.se/auto/ +CROSS COMPILE +============= + + (This section was graciously brought to us by Jim Duey, with additions by + Dan Fandrich) + + Download and unpack the cURL package. Version should be 7.9.1 or later. + + 'cd' to the new directory. (e.g. cd curl-7.12.3) + + Set environment variables to point to the cross-compile toolchain and call + configure with any options you need. Be sure and specify the '--host' and + '--build' parameters at configuration time. The following script is an + example of cross-compiling for the IBM 405GP PowerPC processor using the + toolchain from MonteVista for Hardhat Linux. + + (begin script) + + #! /bin/sh + + export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin + export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include" + export AR=ppc_405-ar + export AS=ppc_405-as + export LD=ppc_405-ld + export RANLIB=ppc_405-ranlib + export CC=ppc_405-gcc + export NM=ppc_405-nm + + ./configure --target=powerpc-hardhat-linux \ + --host=powerpc-hardhat-linux \ + --build=i586-pc-linux-gnu \ + --prefix=/opt/hardhat/devkit/ppc/405/target/usr/local \ + --exec-prefix=/usr/local + + (end script) + + You may also need to provide a parameter like '--with-random=/dev/urandom' + to configure as it cannot detect the presence of a random number + generating device for a target system. The '--prefix' parameter + specifies where cURL will be installed. If 'configure' completes + successfully, do 'make' and 'make install' as usual. + + In some cases, you may be able to simplify the above commands to as + little as: + + ./configure --host=ARCH-OS + + There are a number of configure options that can be used to reduce the + size of libcurl for embedded applications where binary size is an + important factor. First, be sure to set the CFLAGS environment variable + when configuring with any compiler optimization flags to reduce the + size of the binary. For gcc, this would mean at minimum: + + env CFLAGS='-Os' ./configure ... + + Be sure to specify as many --disable- and --without- flags on the configure + command-line as you can to disable all the libcurl features that you + know your application is not going to need. Besides specifying the + --disable-PROTOCOL flags for all the types of URLs your application + will not use, here are some other flags that can reduce the size of the + library: + + --disable-ares (disables support for the ARES DNS library) + --disable-cookies (disables support for HTTP cookies) + --disable-crypto-auth (disables HTTP cryptographic authentication) + --disable-ipv6 (disables support for IPv6) + --disable-verbose (eliminates debugging strings and error code strings) + --without-libidn (disables support for the libidn DNS library) + --without-ssl (disables support for SSL/TLS) + --without-zlib (disables support for on-the-fly decompression) + + You may find that statically linking libcurl to your application will + result in a lower total size. + + PORTS ===== This is a probably incomplete list of known hardware and operating systems @@ -548,6 +586,7 @@ PORTS - Ultrix 4.3a - i386 BeOS - i386 DOS + - i386 Esix 4.1 - i386 FreeBSD - i386 HURD - i386 Linux 1.3, 2.0, 2.2, 2.3, 2.4 -- cgit v1.2.3