1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520
|
Problems in building and installing DDD -*- text -*-
***************************************
This file lists problems encountered when building and installing DDD
in various environments.
Table of Contents
=================
* Ada
* AIX
* Cygwin
* DEC
* FreeBSD
* GCC
+ GCC 3.0 prereleases
+ GCC and libg++
* HP-UX
* Irix
* LessTif
* Linux
* MacOS X
* OSF/1
* Solaris 2.x
* SunOS
+ SunOS 4.1 and X11R6
+ SunOS 4.1 and Sun C++
* Tru64
* Unixware
* X11R4
ADA
===
Reported by: Rick Flower <Rick.Flower@trw.com>
To debug Ada programs created with Gnat, you need a set of GDB
patches. The current best set of patches for GDB 4.16 can be
found at `ftp://cs.nyu.edu/pub/gnat/gdb'.
AIX
===
Reported by: jensen@Adobe.COM (Freddy Jensen)
To compile DDD 3.3 for AIX 4.3.3:
I had to set these two flags before running configure:
setenv CPPFLAGS "-I/usr/shared/gcc_2.95/aix_4.3/lib/gcc-lib/rs6000-ibm-aix4.3.2.0/2.95.2/include"
setenv LDFLAGS "-Wl,-bbigtoc"
After running configure I had to edit ddd/config.h and
change this:
From: #define HAVE_TCDRAIN 1
To: #define HAVE_TCDRAIN 0
Otherwise I would get tcdrain() undefined. I tried to link
in libcurses.a explicitly, but that did not work. I am not
sure exactly what the effect of not having tcdrain() is,
although ddd seems to run just fine without it.
Reported by: Andreas Zeller <zeller@gnu.org>
Some EGCS versions on AIX have trouble compiling DDD. If you get
internal compiler errors, try compiling the affected modules
without optimization. Here are the commands:
$ cd TOPLEVEL # Top of DDD distribution
$ make -k # Build all with optimization
$ cd ddd
$ make -k CXXOPT= # Build remainder of DDD without optimization
Reported by: Brian Cameron <bcameron@tuc.com>
When compiling DDD using EGCS, you may get a conflict between
<math.h> and the <exception> header. As a workaround, create a
local `math.h' file that contains:
#define exception math_exception
#include_next <math.h>
#undef math_exception
Reported by: Andreas Zeller <zeller@gnu.org>
Because of a limitation in the AIX linker, linking of DDD may stop
with the message "TOC overflow". The AIX Table of Contents (TOC)
by default has only 16,384 entries; DDD has far more symbols.
If you use EGCS 1.1 or GCC 2.8.0 or later, `configure' should
already have fixed this for you. In other configurations, there
are three ways to fix this problem:
1. Add the flag `-Wl,-bbigtoc' to the `LDFLAGS' definition in
`ddd/Makefile' and retype `make'. This makes the AIX linker
use a larger TOC.
2. If this does not work, add the flags `-mno-fp-in-toc' and
`-mno-sum-in-toc' to the `CXXFLAGS' definition in
`ddd/Makefile' and recompile all. Each of these options causes
GCC to produce very slightly slower and larger code at the
expense of conserving TOC space.
3. If this still does not work, add the flag `-mminimal-toc' to
the `CXXFLAGS' definition in `ddd/Makefile' and recompile all.
When you specify this option, GCC will produce code that is
slower and larger but which uses extremely little TOC space.
Reported by: Jacek M. Holeczek <holeczek@us.edu.pl>
This "howto" describes the way one can get ddd-3.0 compiled on AIX 4.1
using standard AIX utilities: C Set ++ for AIX Compiler (xlC), lex
and yacc. The same procedure should be valid on AIX 4.2 and AIX 3.2.
First unpack the source distribution and go to the ddd-3.0 subdirectory.
Then set some environment variables:
export CC=xlC
export CXX=xlC
export CFLAGS="-O"
export CXXFLAGS="-O"
export LDFLAGS="-O"
unset LIBPATH
If you decide NOT to use gnu gcc, flex, and bison you may also
need to remove the /usr/local/bin (or any other subdirectory where
you keep gnu executables) from the PATH environment variable (so
that the ./configure script will not find them, and it will find
standard AIX xlC, lex, and yacc):
export PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin
Then run configure:
./configure -v
On AIX 3.2 you might need to add a line in ./ddd/config.h in form:
#define HAVE_GETHOSTNAME_DECL 1
(On AIX 4.1, AIX 4.2 you should have it already defined by ./configure.)
If you decide NOT to use gnu flex and gnu bison and use standard
AIX lex and yacc instead, you have to remove some files:
rm ./ddd/vsl-gramma.C ./ddd/vsl-gramma.h
rm ./ddd/vsl-lex.C
rm ./ddd/rxscan.C
Now run "make clean" and then "make".
If you decided to use standard AIX lex and yacc the make will
complain (while working on ./ddd/vsl-lex.*, ./ddd/vsl-gramma.*,
./ddd/rxscan.*):
lextoC: cannot determine lex type -- reverting to flex
yacctoC: cannot determine yaccpar type -- reverting to bison
You can safely ignore these messages (they come from ./ddd/lextoC
and ./ddd/yacctoC and mean that they have no AIX lex and yacc
specific entries). Later on, the make will crash while compiling
./ddd/VSLRead.C. You have to edit ./ddd/vsl-gramma.C (after the
./ddd/vsl-gramma.C is newly created by yacc) and modify the
declaration of vslerror:
extern "C" void vslerror(char *s); // added "C"
and the definition of vslparse:
#ifdef __cplusplus
// extern "C" // commented extern "C"
#endif /* __cplusplus */
int
vslparse()
In case you created ./ddd/rxscan.C with AIX 4.1 lex (from the
./ddd/rxscan.L) you additionally need to modify one line in the
beginning of this file increasing YYLMAX from 200 to 8192 (this is
a result of a bug in AIX 4.1 lex, most probably not present on
both AIX 3.2 and AIX 4.2 - note here that you will not get any
compile time errors if you do not modify it, but your executable
will be broken):
# define YYLMAX 8192
then run "make" again. You should get no other warnings/errors except:
- when compiling ./ddd/mainloop.C:
68 1500-010: (W) WARNING in ddd_main_loop(): Infinite loop.
Program may not stop.
( this is intentional, you can safely ignore it ).
Finally run "make strip" and "make install". Have fun ...
Cygwin
======
Cygwin is supported from ddd 3.3.9 on.
DEC
===
(See Tru64 section)
Reported by: Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>
When using DEC's C++ compiler 6.0, more than 99% of the warnings I
get *normally* when building ddd are complaints about the X11R6
header files not explicitly using `int' as a return type. To make
it easier to see the other warnings, I've added
`-msg_disable nonstd_implicit_int'
to the `CXXFLAGS' before building this time.
Reported by: Pascal Quesseveur <abak@hol.fr>
I have encountered some problems when compiling ddd on DEC Alpha
station running Digital UNIX 4.0 with gcc version 2.7.2.2:
ddd/config.h created by configure is wrong: symbol
HAVE_GETHOSTNAME_DECL must be defined in config.h since include file
/usr/include/unistd.h contains a prototype for gethostname. This
prototype is
int gethostname(char *, size_t)
when symbol _XOPEN_SOURCE_EXTENDED is defined and
int gethostname (char *, int)
in the other cases. There is a conflict with the prototype defined in
ddd/hostname.C.
The `ddd/Makefile' created by configure is wrong: variables
LIBNSL, NON_XLIBS and LIBGEN have incorrect values - the values
must be null to link ddd correctly.
Jim Tarrant <jtarrant@inri.co.uk> reports:
To compile DDD-3.0 on our Digital Unix 4.0D workstations with GCC
2.8.1, I had to turn optimization off while building (use `make
CXXOPT=-DNDEBUG' to build DDD).
FreeBSD
=======
Reported by: taob@gate.sinica.edu.tw (Brian Tao)
Use `gmake' (GNU make) instead of `make' for building DDD.
GCC
===
GCC 3.0 prereleases
-------------------
Building DDD with GCC 3.0 prerelases on Intel/Linux currently
leads to duplicate template instantiations. Recompiling the
conflicting objects without optimization should make the problem
go away. Use something like:
$ rm buttons.o DataDisp.o settings.o BreakPoint.o ddd.o session.o
$ make CXXOPT=
to rebuild DDD.
GCC and LIBG++
--------------
If you have multiple copies of gcc and/or libg++ installed, be
sure that the referenced versions match each other. This is a
common source for various problems.
HP-UX
=====
Reported by: Andrew Gaylard <apg@users.sf.net>
HP-UX 10.20's SOM linker has problems with linking DDD. To work
around it, it is necessary to build without debugging information
(stripping after compiling doesn't help).
It is also necessary to link with the Motif library statically.
This is taken care of by the configure script.
To compile DDD-3.3.8 for HP-UX 10.20 with g++ 3.x:
1. ./configure --with-athena-includes=/usr/contrib/X11R6/include \
--with-athena-libraries=/usr/contrib/X11R6/lib
2. make CFLAGS=-O2 CXXFLAGS=-O2
(If configure fails to link statically Motif, it can be achieved with
"make LIBXM=/usr/lib/Motif1.2_R6/libXm.a")
Starting ddd-3.3.9, "./configure CFLAGS=-O3 CXXFLAGS=-O3; make" should
be enough. It seems that as features are added to DDD, the optimisation
level needs to increase, or linking fails...
DDD-3.3.9 builds on HP-UX 11.11 (aka 11i), with some fiddling. The
following process may be overkill, but is known to work:
- Install HP's December 2003 patchset.
- Install the linker patch PHSS_28871 (or PHSS_28869 for 11.00).
- Install the HP-UX "developer's toolkit"; you can get it from
http://www.software.hp.com/portal/swdepot/displayProductInfo.do?productNumber=B3394BA
(many thanks to Chris Seip of HP for this link!)
- Build and install binutils 2.14 (I used /usr/local). I also installed
m4, bison, flex, make and zlib.
- Build and install gcc-3.3.2 or gcc-3.4.0, using
../configure --with-gnu-as --with-as=/usr/local/bin/as
- At this point, DDD's "./configure; make; make install" will work.
If anyone's tried building DDD with HP's aCC, I'd like to hear from you.
Reported by: Tuomo Tikkanen <Tuomo.Tikkanen@nokia.com>
To use HP's aCC to build ddd 3.3.9, setting CXXFLAGS='-AA' is necessary.
Irix
====
Using the MIPSPro compilers:
To compile ddd 3.3.9, CXXFLAGS needs to include "-LANG:std".
To use Motif 2.1, the configure line is:
env CC='cc -n32' CXX='CC -n32' \
CFLAGS='-O' CXXFLAGS='-O -LANG:std' \
./configure \
--with-motif-includes=/usr/Motif-2.1/include \
--with-motif-libraries=/usr/Motif-2.1/lib32 \
--x-libraries=/usr/lib32
LessTif
=======
To use DDD with LessTif, get a recent LessTif release from
`http://www.lesstif.org'. Be sure to apply the patches found in
the `patches/' subdirectory.
With DDD 3.1.6 and LessTif 0.88.9, the following problems are
currently known:
* Resizing the plot window does not work properly.
See the DDD WWW page for further issues and patches.
Linux
=====
Reported by: Andrew Gaylard <apg@users.sf.net>
If the command window appears as follows on startup:
GNU DDD 3.3.7 (i686-pc-linux-gnu), by Dorothea L(gdb)�
then you probably have $LANG set to something like "en_US.UTF-8".
Setting it to either "C" or "en_US.iso885915", or unsetting it completely
will fix this problem.
Alternatively, link with Lesstif.
This has been observed on Redhat-8.1, but probably affects other
Unixes as well.
Intel
-----
Reported by: Jim Van Zandt <jrv@vanzandt.mv.com>
Under slackware 3.1, the file permissions in `/dev/ptyp?' do not
allow for DDD <-> GDB interaction. I did "cd /dev; rm pty*;
MAKEDEV ptyp ptyq ptys ptyt", the former permissions and device
numbers were restored, and DDD worked.
[Can anyone tell me how to circumvent this within DDD? - AZ]
Reported by: Bernie Borenstein <c372321@hc1056.mdc.com>
Make sure you use libc version 4.6.27 or later. Otherwise some
Motif versions will cause DDD to crash as soon as `Open
Program...' is selected (or any other file selection dialog is
opened). Linux Motif's are very sensitive about this.
As an intermediate workaround, use the GDB `file' and `core'
commands; to open a specific source, use the GDB `info file
FUNCTION' command, where FUNCTION is a function defined in that
source file.
Alpha
-----
Reported by: J.H.M. Dassen <jdassen@wi.leidenuniv.nl>
The kernel headers before Linux 2.1.61 and 2.0.32 don't work
correctly with glibc. Compiling C programs is possible in most
cases but C++ programs have (due to the change of the name lookups
for `struct's) problems. One prominent example is `struct
fd_set'.
There might be some problems left but 2.1.61/2.0.32 fix most of
the known ones. See the BUGS file for other known problems.
Pmac
----
Reported by: Ryan Ware <ware@shocking.com>
I just wanted to let you know that (unlike previous versions of
DDD) 2.99 compiles almost straight out of the box for linux-pmac.
The only thing I had to change was the optimization level to O1.
O2 broke the compiler. It looks and runs great. Thanks. I look
forward to many hours of using it.
MacOS X
=======
Build may fail on case sensitive file systems as ddd and Ddd conflict.
See http://mail.gnu.org/archive/html/ddd/2002-09/msg00024.html.
Patches are welcome.
OSF/1
=====
Reported by: Marc Mengel <mengel@fnal.gov>
On our OSF1 V3.2 machine, one has to turn of -g, or the
assembler chokes when compiling ddd.C.
Solaris 2.x
===========
Reported by: Joe VanAndel <vanandel@ucar.edu>
When compiling for Solaris (SPARC) with X11R6.1 on Solaris 2.5.1,
LDFLAGS='-lICE -lSM -lsocket' ./configure <configure_flags>
so that all the necessary X libraries are linked in.
Reported by: Matthias Klose <doko@cs.tu-berlin.de>
If you configure DDD in Solaris with gcc and you have installed
the libg++/libstdc++ libraries as shared libraries, you may try to
run configure with LDFLAGS set to -R<prefix of libstdc++>/lib. If
libstdc++/libg++ are installed in /usr/xyz, call configure with
LDFLAGS=-R/usr/xyz/lib configure <configure flags ...>
Reported by: Blair Zajac <blair@olympia.gps.caltech.edu>
When using Sun cc to compile `libiberty' as shipped with DDD, change
`extern char *__builtin_alloca();' to `extern void
*__builtin_alloca();' in `alloca-norm.h' to get the code to compile.
This does not happen with GCC.
SunOS
=====
SunOS 4.1 and X11R6
-------------------
Reported by: dmitzel@everest.hitc.com (Danny J. Mitzel) and
doko@cs.tu-berlin.de (Matthias Klose)
Using certain Motif and Athena libraries may cause
`_vendorShellWidgetClass' to be defined twice. A possible
workaround is to configure DDD to run without Athena widgets
(i.e. in `config.h', undefine `HAVE_ATHENA_WIDGETS' and remove the
-lXaw flag from the `Makefile' linking command).
SunOS 4.1 and Sun C++
---------------------
Reported by: Franklin Chen <chen@adi.com>
On SunOS 4.1.x, with Sun C++ 4.0.1, `config.h' needs to end up with
#define SIGHANDLERARGS int, ...
rather than
#define SIGHANDLERARGS int
to avoid compile errors in a number of source files.
Tru64
=====
Reported by: Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>
Using the Compaq C++ compiler Version 6.5, it is necessary
to use "CXX='cxx' CXXFLAGS='-std ansi -D__USE_STD_IOSTREAM -nousing_std'
./configure" to build ddd 3.3.9 and later.
(CXXFLAGS='-std strict_ansi -nopure_cname' should do as well).
UNIXWARE
========
Reported by: Vinnie Shelton <shelton@icd.teradyne.com>
For Unixware, I have to set up `ddd/Makefile' as follows
after configuration:
LINK.cc = env LD_RUN_PATH=/usr/X11R6/lib $(CXX) $(CXXBINDING) $(LDFLAGS)
X11R4
=====
Reported by: mlj@gensym.com (Magnus Ljungberg)
You may need to prohibit the use of the _XEditResCheckMessages()
function by entering a line saying '#undef HAVE_X11_XMU_EDITRES_H' in
`ddd.C'.
$Id$
|