This page describes how to compile the OpenH323 code
release. Note these instructions will always refer to the latest
snapshot available on the download
page.
The OpenH323 source will have been compiled and
tested under Linux x86, and Windows NT. If it does not compile for you
then the problem is likely to be a setup/configuration problem with your
system and not a problem with the source code itself.
The libraries and applications should also compile
on Windows 95/98, BeOS (thanks Yuri!), Linux PPC, FreeBSD x86,
OpenBSD x86 (thanks Roger!) and
Solaris Sparc & x86. They are not automatically compiled on every
release however so there could be problems, but the chances are that there
aren't. Note also that not all of these platforms may have ports of the
sound interface.
We are also happy to port it to other Unix flavours
providing people out there can provide an account and a fair bit of disk
space!
These instructions should contain all of the steps
need. If you have a problem, please double check that you have performed
ALL of the steps below, particularly setting the include file paths under
MSVC. Some of the more common errors are described below.
If you get a lot of compile or link errors, then the
chances are that you have missed something in the list. If you are
positive that something is wrong and you have followed the instructions,
then send an e-mail to the mailing
list, and we'll answer it for everyone to
see.
Finally, the documentation for the library is
included in the header files, you can create HTML files from the source
using the doc++ package available here.
The windows build instructions are only for
Microsoft DevStudio version 6 at this stage. If you have v5 then you may
still build the system but you can not use the DLL's (see FAQ for more
info) and there is no guarentee of compatibility in the future. If you
have another compiler you are completely on your own!
1.
Download the pwlib_1.xx.zip and
openh323_1.x.zip files from the OpenH323 download
page.
2.
Extract the pwlib_1.xx.zip file
somewhere eg c:\, making sure the directory structure is
preserved.
3.
Start MSVC (v5, v6 or v7 (.NET)). If you have
another compiler you are on your own! Add these folders to the
Include Files path as follows:
In VisualStudio v5/6 go into the Tools menu,
Options item, Directories tab.
In VisualStudio v7, go into the Tools menu,
Options item. In the Options dialog, open the Projects folder, VC++
Directories item. In the 'Show Directories for:' list, select
'Include files'.
Add to the beginning of the Include files path
(note the order is important!):
and add to the Lib Files path
and the Executable Files path the
following:
C:\PWLib\Lib C:\OpenH323\Lib
Also make sure these directories are in your
PATH environment variable.
The Lib folder is created as parts of PWLib
are built. Also add this directory to your PATH environment variable
(so PWRC, MergeSym and ASNParser tools can be
found).
3a
If you have OpenSSL installed and compiled on
your system then you can define the following environment variables
to get SSL support:
If you have not
included these variables then you will get a warning during the
build. You can safely ignore this warning.
4.
Note you will need
bison and
flex to compile the
system. You can get a copy or the binaries from here, follow
the instructions included. It may also be necessary to add this
directory to the MSVC executable path.
5.
In VisualStudio v5/6 open the pwlib.dsw file
in the pwlib top directory. If you have the minimum library it
will come up with several requests to find .dsp files, just
cancel past these.
In VisualStudio v7 open
the pwlib.sln file in the pwlib top directory.
6.
Use the Batch Build command and build the
"ASNParser - Win32 Release", "pwtest - Win32 Release" and
"pwtest - Win32 Debug" targets. make sure all other targets are
not checked. Also make sure you have not checked
the "Selection Only" check box.
7.
Extract the contents of the
openh323_1.x.zip file
somewhere.
8.
Use the OpenH323.dsw
file to build the Open H.323 and sample code. Use the "SimpH323 -
Win32 Release" target and the dependencies should build the OpenH323
DLL's.
9.
Run the program, and you are on your
own!
Unix
The Unix build instructions are only for GNU C++ v
2.95 or later. If you have an earlier then you may still build the system
but there is no guarentee of compatibility in the future. If you have
another compiler you are completely on your own!
Note 1: If you require support for
the Quicknet cards, then you will require the Linux Telephony component in
kernel (2.2.14 or later) for the Quicknet card support to work. You will
also need the latest
Quicknet drivers for the Quicknet card support to work
correctly.
Note 2: If you require video
support, make sure you have the latest video drivers installed for your
card.
1.
Download the
pwlib_min_x.xx.tar.gz and
openh323_1.xx.tar.gz files from the OpenH323
download
page.
2.
Extract the
pwlib_min_x.xx.tar.gz somewhere, preferably
in your home directory, eg:
cd tar -xzvf
pwlib_min_1.14.tar.gz
This should result in a ./pwlib directory
tree.
3.
If you have not installed PWLib in your home
directory (~/pwlib) then you will have to
define the environment variable PWLIBDIR to point to the correct
directory.
Also make sure you have added the
$PWLIBDIR/lib directory to your LD_LIBRARY_PATH environment variable
if you intend to use shared libraries (the default under
Linux).
Build the debug and release versions of the
PWLib library as follows:
cd $PWLIBDIR make
both
This may take some time. Note, you will need
GNU make
(>=3.75),
bison(>=1.25) and
flex (>=2.5.4) for this to
compile, most Unix systems have these packages.
WARNING: there is a bug in most of the
bison.simple files.
If you are getting huge numbers of errors from
make then you are probably not using the GNU make. FreeBSD and
OpenBSD users must install gmake and use gmake instead of
make in these instructions. If the errors are during the
compile, then it is likely your platform is not supported, or you
have incorrectly set the OSTYPE and MACHTYPE variables. There will
be a large warning printed about this, don't ignore
it!
5.
Extract the contents of the
openh323_x.x.tar.gz file somewhere, eg:
cd tar -xzvf
openh323_1.1alpha1.tar.gz
6.
If you have not installed OpenH323 in your
home directory (~/openh323) then you will
have to define the environment variable OPENH323DIR to point to the
correct directory.
Also make sure you have added the
$OPENH323DIR/lib directory to your LD_LIBRARY_PATH environment
variable if you intend to use shared libraries (the default under
Linux).
Build the H323 bootstrap code. This will
automatically build the ASN compiler (in the
$PWLIBDIR/tools/asnparser directory), though
this should have already been built previously. Enter:
cd $OPENH323DIR make
opt
This may take some time, especially with the
h245_*.cxx and h225.cxx files. You may also need to add more swap
space - 64M of real memory and 64M of swap might just be
enough, if your machine does nothing else! Some people have reported
needing as much as 128M of swap - if your compiler bombs out with a
"virtual memory exhausted" error compiling h245_*.cxx and h225.cxx,
then increase your swap space.
8.
The result should be an executable called
simph323, which will be built in a directory dependent on the
platform, eg obj_linux_x86_d. To run it, use the following command:
./samples/simple/obj_linux_x86_r/simph323
and you should get the usage help
text.
9.
Now you're on your
own!
Common errors
Here are common errors you might encounter for both
Windows and Unix builds.
The file h235, h225.h, h245 etc are
missing.
A number of files are generated files
that are created during the build process. If they are missing then
something went wrong with the creation of the asnparser or your
installation of flex/bison.
The following error:
/home/newbie/pwlib/tools/asnparser/obj_linux_x86_r/asnparser:
error in loading shared libraries: libpt_linux_x86_r.so.1: cannot
open shared object file: No such file or
directory
You have not set the LD_LIBRARY_PATH
environment variable. Below are examples for some common
shells
Linking... LINK : fatal error
LNK1181: cannot open input file "ptlib.lib" Error executing
link.exe.
You have not set the MSVC library paths
correctly
(Tools->Options->Directories).
The following error:
Performing Custom Build Step
on ..\common\getdate.y The name specified is not recognized as
an internal or external command, operable program or batch
file. Error executing
c:\winnt\system32\cmd.exe.
You have not installed bison and flex
correctly. Check that they are named bison.exe and
flex.exe and the directory they are in is in the PATH
environment variable. it may also be necessary to add this directory
to the MSVC executable path
(Tools->Options->Directories).
The following error:
Performing Bison Step c:\tools\share\bison.simple:
No such file or directory C:\PWLIB\TOOLS\ASNPAR~1\BISON.EXE: Cannot
move asn_grammar_tab.c - No such file or directory Cannot move
asn_grammar_tab.h - No such file or
directory
Indicates you have not installed bison
correctly. In particular the bison.simple file must be
available to bison. Check the bison documentation for details on
this.
The following error:
E:\VOIP\BetaOpenH323\openh323_1_1beta1\openh323\Include\codecs.h(243)
: error C2061: syntax error : identifier
'RTP_DataFrame' E:\VOIP\BetaOpenH323\openh323_1_1beta1\openh323\Include\codecs.h(261)
: error C2143: syntax error : missing ',' before
'&' E:\VOIP\BetaOpenH323\openh323_1_1beta1\openh323\Include\codecs.h(261)
: error C2059: syntax error :
'&' E:\VOIP\BetaOpenH323\openh323_1_1beta1\openh323\Include\codecs.h(304)
: error C2653: 'RTP_DataFrame' : is not a class or namespace
name E:\VOIP\BetaOpenH323\openh323_1_1beta1\openh323\Include\codecs.h(304)
: error C2146: syntax error : missing ';' before identifier
'GetRTPPayloadType' E:\VOIP\BetaOpenH323\openh323_1_1beta1\openh323\Include\codecs.h(304)
: error C2501: 'PayloadTypes' : missing storage-class or type
specifiers E:\VOIP\BetaOpenH323\openh323_1_1beta1\openh323\Include\codecs.h(304)
: warning C4183: 'GetRTPPayloadType': member function definition looks
like a ctor, but name does not match enclosing
class
Indicates that you have not set the MSVC
include path in the correct order.
Attempting to compile GUI systems under
Unix.
There are a number of partial
implementations of the GUI code in the $PWLIBDIR/src/pwlib directory
tree. These are not required to get the OhPhone application compiled.
If you get those systems from the CVS then you are basically on your
own. Do not ask for support unless you intend to help with the
implementation!