1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-21 23:58:49 -05:00

Dan Fandrich extended the cross compile section and corrected spelling errors

This commit is contained in:
Daniel Stenberg 2004-12-10 21:55:05 +00:00
parent 070da3c08f
commit b6646310e8

View File

@ -102,7 +102,7 @@ UNIX
CC=cc ./configure CC=cc ./configure
or or
env Cc=cc ./configure env CC=cc ./configure
To force a static library compile, disable the shared library creation To force a static library compile, disable the shared library creation
by running configure like: by running configure like:
@ -363,9 +363,9 @@ VMS
+----+------------+-------------+---+ +----+------------+-------------+---+
With the Ctrl-bits an application can tell if part or the whole message has 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 the name can be fetched from external or internal message libraries
Errorcode - the errodes assigned by the application Errorcode - the errodes assigned by the application
Sev. - severity: Even = error, off = non error Sev. - severity: Even = error, off = non error
@ -397,7 +397,7 @@ QNX
=== ===
(This section was graciously brought to us by David Bentham) (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 set conservative limits. This includes the FD_SETSIZE macro, set by default
to 32. Socket descriptors returned within the CURL library may exceed this, to 32. Socket descriptors returned within the CURL library may exceed this,
resulting in memory faults/SIGSEGV crashes when passed into select(..) resulting in memory faults/SIGSEGV crashes when passed into select(..)
@ -407,44 +407,6 @@ QNX
libcurl, by overriding CFLAGS during configure, example libcurl, by overriding CFLAGS during configure, example
# configure CFLAGS='-DFD_SETSIZE=64 -g -O2' # 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 RISC OS
======= =======
@ -488,31 +450,107 @@ NetWare
- gnu make and awk running on the platform you compile on; - gnu make and awk running on the platform you compile on;
native Win32 versions can be downloaded from: native Win32 versions can be downloaded from:
http://www.gknw.com/development/prgtools/ 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 http://developer.novell.com/ndk/libc.htm
- optional zlib sources (at the moment only dynamic linking with zlib.imp); - 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/ http://www.gknw.com/mirror/zlib/
Set a search path to your compiler, linker and tools; if you want to have 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 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'; sources, on Linux make sure the var OSTYPE contains the string 'linux';
and finally type 'make netware' from the top source directory... 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 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...; with 'OSTYPE=linux-rh9-gnu' and the detection in the Makefile worked...;
other options are currently not supported, although partly prepared. other options are currently not supported, although partly prepared.
The Ares lib builds arlready fine, and both test tools work fine at least 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 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! 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/ 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/ 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 PORTS
===== =====
This is a probably incomplete list of known hardware and operating systems This is a probably incomplete list of known hardware and operating systems
@ -548,6 +586,7 @@ PORTS
- Ultrix 4.3a - Ultrix 4.3a
- i386 BeOS - i386 BeOS
- i386 DOS - i386 DOS
- i386 Esix 4.1
- i386 FreeBSD - i386 FreeBSD
- i386 HURD - i386 HURD
- i386 Linux 1.3, 2.0, 2.2, 2.3, 2.4 - i386 Linux 1.3, 2.0, 2.2, 2.3, 2.4