FAQ_Irix
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:13k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. ======================================================
  2. Frequently Asked Questions (FAQ) for PostgreSQL >=V6.1
  3. IRIX Specific
  4. TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ
  5. ======================================================
  6. last updated:           Mon Mar 05 17:00:00 GMT 1998
  7. current maintainer:     Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
  8. original author:        Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
  9. Changes in this version (* = modified, + = new, - = removed):
  10. *1.5)   Can I install PostgreSQL ()
  11. *** ./backend/Makefile.orig     Thu May 22 00:00:15 1997
  12. --- ./backend/Makefile  Thu Jun  5 16:47:27 1997
  13. ***************
  14. *** 54,60 ****
  15.   all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
  16.   postgres: $(OBJS) ../utils/version.o
  17. !       $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
  18.   $(OBJS): $(DIRS:%=%.dir)
  19. --- 54,64 ----
  20.   all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
  21.   postgres: $(OBJS) ../utils/version.o
  22. ! #     $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
  23. !       -rm -f *.o
  24. !       find . -name "*.o" -exec cp {} . ;
  25. !       rm -f SUBSYS.o
  26. !       $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS)
  27.   $(OBJS): $(DIRS:%=%.dir)
  28. 1.6)    The make fails with the following message:
  29.         ld32: ERROR 4: Conflicting flag setting: -call_shared
  30.         If gmake fails in .../src/backend while building obj/ACCESS.o
  31.         with a message from ld32, you can work around this by using
  32.         ld for the LD environment variable rather than cc.
  33.         The problem has been observed under Irix 5.3 when compiling both
  34.         Postgres95-1.09 and PostgreSQL-6.2Beta6, but on some systems
  35.         these appear to compile with no such problems.
  36.         Fix supplied by Brian Sanders (bsanders@netcom.com,
  37.         brian@fresnelsoft.com)
  38. 1.7)    Why won't it link? (Problems with lorder)
  39.         According to the IRIX man pages, lorder is useless, but harmless
  40.         under IRIX. However, it has caused problems for some people
  41.         using both IRIX 6.2.
  42.         The solution is to add the following line to
  43.         .../src/makefiles/Makefile.irix5
  44.         MK_NO_LORDER=true
  45. 1.8)    I have major problems with IRIX 6!
  46.         The following is quoted directly from Bob Bruccoleri
  47. There is a really nasty loader bug in the compiler system (7.1)
  48. on Irix 6.x, and the error that Lasse Petersen is the result of it.
  49. Here is the original message. I don't know if all the changes have been
  50. folded into the current release.
  51. Date: Fri, 06 Jun 1997 17:12:20 -0400 (EDT)
  52. From: bruc@bms.com (Robert Bruccoleri)
  53. Subject: [PORTS] Patches for Irix 6.4
  54. I have worked out how to compile PostgreSQL on Irix 6.4 using the -n32 compiler
  55. mode and version 7.1 of the C compiler. (The n32 compiler use 32 bits addressin
  56. g,
  57. but allows access to all the instructions in the MIPS4 instruction set.)
  58. There were several problems:
  59. 1) The ld command is not referenced as a macro in all the Makefiles. On
  60. this platform, you have to include -n32 on all the ld commands. Makefiles
  61. were changed as needed.
  62. 2) There is a bug in "ld" which mishandles the addresses of static procedures
  63. when object files are assembled into larger object files using "ld -r".
  64. Because of this, I put a hack into src/backend/Makefile to avoid all the
  65. SUBSYS.o files and just link all the objects. I have contacted SGI about the
  66. problem, and hopefully, it will be fixed in the near future.
  67. 3) Lots of warnings are generated from the compiler. Since the regression
  68. tests worked OK, I didn't attempt to fix them. If anyone wants the compilation
  69. log, please let me know, and I'll email it to you.
  70. The version of postgresql was 970602. Here is Makefile.custom:
  71. CUSTOM_COPT = -O2 -n32
  72. MK_NO_LORDER = 1
  73. LD = ld -n32
  74. CC += -n32
  75. Here are the patches:
  76. *** ./backend/access/Makefile.orig      Sun Nov 10 00:00:15 1996
  77. - --- ./backend/access/Makefile Tue Jun  3 10:22:32 1997
  78. ***************
  79. *** 8,13 ****
  80. - --- 8,16 ----
  81.   #
  82.   #-------------------------------------------------------------------------
  83. + SRCDIR = ../..
  84. + include ../../Makefile.global
  85. +
  86.   OBJS = common/SUBSYS.o gist/SUBSYS.o hash/SUBSYS.o heap/SUBSYS.o 
  87.          index/SUBSYS.o rtree/SUBSYS.o nbtree/SUBSYS.o transam/SUBSYS.o
  88. *** ./backend/bootstrap/Makefile.orig   Fri Apr 18 06:00:23 1997
  89. - --- ./backend/bootstrap/Makefile      Tue Jun  3 10:23:59 1997
  90. ***************
  91. *** 38,44 ****
  92.   all: SUBSYS.o
  93.   SUBSYS.o: $(OBJS)
  94. !       ld -r -o SUBSYS.o $(OBJS)
  95.   # bootstrap.o's dependency on bootstrap_tokens.h is computed by the
  96.   # make depend, but we state it here explicitly anyway because
  97. - --- 38,44 ----
  98.   all: SUBSYS.o
  99.   SUBSYS.o: $(OBJS)
  100. !       $(LD) -r -o SUBSYS.o $(OBJS)
  101.   # bootstrap.o's dependency on bootstrap_tokens.h is computed by the
  102.   # make depend, but we state it here explicitly anyway because
  103. *** ./backend/Makefile.orig     Thu May 22 00:00:15 1997
  104. - --- ./backend/Makefile        Thu Jun  5 16:47:27 1997
  105. ***************
  106. *** 54,60 ****
  107.   all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
  108.   postgres: $(OBJS) ../utils/version.o
  109. !       $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
  110.   $(OBJS): $(DIRS:%=%.dir)
  111. - --- 54,64 ----
  112.   all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
  113.   postgres: $(OBJS) ../utils/version.o
  114. ! #     $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
  115. !       -rm -f *.o
  116. !       find . -name "*.o" -exec cp {} . ;
  117. !       rm -f SUBSYS.o
  118. !       $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS)
  119.   $(OBJS): $(DIRS:%=%.dir)
  120. ***************
  121. *** 116,122 ****
  122.   install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) fmgr.h
  123.            global1.bki.source local1_template1.bki.source 
  124.            libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample
  125. !
  126.         $(INSTALL) $(INSTL_EXE_OPTS) postgres $(BINDIR)/postgres
  127.   ifeq ($(MAKE_EXPORTS), true)
  128.         $(INSTALL) $(INSTLOPTS) $(POSTGRES_IMP) $(LIBDIR)/$(POSTGRES_IMP)
  129. - --- 120,126 ----
  130.   install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) fmgr.h
  131.            global1.bki.source local1_template1.bki.source 
  132.            libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample
  133. !
  134.         $(INSTALL) $(INSTL_EXE_OPTS) postgres $(BINDIR)/postgres
  135.   ifeq ($(MAKE_EXPORTS), true)
  136.         $(INSTALL) $(INSTLOPTS) $(POSTGRES_IMP) $(LIBDIR)/$(POSTGRES_IMP)
  137. *** ./backend/optimizer/Makefile.orig   Wed Feb 19 12:00:34 1997
  138. - --- ./backend/optimizer/Makefile      Tue Jun  3 10:39:47 1997
  139. ***************
  140. *** 8,13 ****
  141. - --- 8,16 ----
  142.   #
  143.   #-------------------------------------------------------------------------
  144. + SRCDIR= ../..
  145. + include ../../Makefile.global
  146. +
  147.   all: submake SUBSYS.o
  148.   OBJS = path/SUBSYS.o plan/SUBSYS.o prep/SUBSYS.o util/SUBSYS.o geqo/SUBSYS.o
  149. *** ./backend/libpq/pqcomprim.c.orig    Mon May 26 00:00:23 1997
  150. - --- ./backend/libpq/pqcomprim.c       Fri Jun  6 16:02:24 1997
  151. ***************
  152. *** 32,40 ****
  153.   #    define hton_l(n) (ntoh_l(n))
  154.   #  else       /* BYTE_ORDER != BIG_ENDIAN */
  155.   #    if BYTE_ORDER == PDP_ENDIAN
  156. ! #      #error PDP_ENDIAN macros not written yet
  157.   #    else     /* BYTE_ORDER !=  anything known */
  158. ! #      #error BYTE_ORDER not defined as anything understood
  159.   #    endif    /* BYTE_ORDER == PDP_ENDIAN */
  160.   #  endif      /* BYTE_ORDER == BIG_ENDIAN */
  161.   #endif                /* BYTE_ORDER == LITTLE_ENDIAN */
  162. - --- 32,40 ----
  163.   #    define hton_l(n) (ntoh_l(n))
  164.   #  else       /* BYTE_ORDER != BIG_ENDIAN */
  165.   #    if BYTE_ORDER == PDP_ENDIAN
  166. ! #      error PDP_ENDIAN macros not written yet
  167.   #    else     /* BYTE_ORDER !=  anything known */
  168. ! #      error BYTE_ORDER not defined as anything understood
  169.   #    endif    /* BYTE_ORDER == PDP_ENDIAN */
  170.   #  endif      /* BYTE_ORDER == BIG_ENDIAN */
  171.   #endif                /* BYTE_ORDER == LITTLE_ENDIAN */
  172. *** ./backend/storage/Makefile.orig     Sun Nov 10 00:01:06 1996
  173. - --- ./backend/storage/Makefile        Tue Jun  3 10:41:29 1997
  174. ***************
  175. *** 8,13 ****
  176. - --- 8,16 ----
  177.   #
  178.   #-------------------------------------------------------------------------
  179. + SRCDIR= ../..
  180. + include ../../Makefile.global
  181. +
  182.   all: submake SUBSYS.o
  183.   OBJS = buffer/SUBSYS.o file/SUBSYS.o ipc/SUBSYS.o large_object/SUBSYS.o 
  184. 1.9)    Why does lex fail with PostgreSQL 6.2.1?
  185.         IRIX 5.3 lex has been reported to fail in
  186.         postgresql-6.2.1/src/backend/parser with the error:
  187.         lex scan.l
  188.         "scan.l":line 86: Error: Invalid request %x xc
  189.         gmake[2]: *** [scan.c] Error 1
  190.         The answer is to use GNU flex 2.5.4 or later. Use the command
  191.            flex --version
  192.         to check you have a new enough version of flex
  193. 1.10)   How do I install PostgreSQL V6.3 under Irix 6.x?
  194.         Irix 6.2-6.4 has a bug in ld which mishandles the addresses of
  195.         static procedures when object files are assembled into
  196.         larger object files using 'ld -r'. This bug has been reported
  197.         to Silicon Graphics.
  198.         Depending on your Irix installation you may also encounter
  199.         2 other problems detailed below: Conflict in C standards,
  200.         Conflict in library functions.
  201.         a) Solving the ld bug
  202.         ---------------------
  203.         One option is to use the Gnu version of ld. Alternatively,
  204.         the following patch should be applied as a workaround.
  205.         (Supplied by Bob Bruccoleri  and modified for
  206.         PostgreSQL V6.3 by Lasse Hiller Petersen )
  207.         Apply the following patch:
  208. *** ./backend/Makefile.orig     Tue Mar  3 15:33:58 1998
  209. --- ./backend/Makefile  Tue Mar  3 15:39:27 1998
  210. ***************
  211. *** 63,69 ****
  212.                                 global1.description
  213. local1_template1.description
  214.   postgres: $(OBJS) ../utils/version.o
  215. !       $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
  216.   $(OBJS): $(DIRS:%=%.dir)
  217. --- 63,73 ----
  218.                                 global1.description
  219. local1_template1.description
  220.   postgres: $(OBJS) ../utils/version.o
  221. ! #     $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
  222. !       -rm -f *.o
  223. !       find . -name "*.o" -exec cp {} . ;
  224. !       rm -f SUBSYS.o
  225. !       $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS)
  226.   $(OBJS): $(DIRS:%=%.dir)
  227.         Lasse configured with ./configure --enable-locale
  228.         and modified Makefile.custom to contain:
  229. CC = cc -n32
  230. LD = ld -n32
  231.         He reports that the installation without -n32 works fine too,
  232.         but the -n32 was required for compatibility with his Perl
  233.         installation. His system was an Origin200 running IRIX64 v6.4.
  234.         b) Conflict in C standards
  235.         --------------------------
  236.         I have found that the following patch is also necessary in order
  237.         to prevent a duplicate definition of a Union used for semaphores.
  238.         Apply the following patch to:
  239.         .../src/makefile/Makefile.irix5:
  240. *** src/makefiles/Makefile.irix5.orig   Thu Mar  5 16:59:58 1998
  241. --- src/makefiles/Makefile.irix5        Thu Mar  5 17:01:13 1998
  242. ***************
  243. *** 6,9 ****
  244.   %.so: %.o
  245.         $(LD) -G -Bdynamic -shared -o $@ $<
  246. !
  247. --- 6,9 ----
  248.   %.so: %.o
  249.         $(LD) -G -Bdynamic -shared -o $@ $<
  250. ! CFLAGS+= -U_NO_XOPEN4
  251.         i.e. the addition of the line:
  252.         CFLAGS+= -U_NO_XOPEN4
  253.         This is needed to stop the semun union being redefined in
  254.         /usr/include/sys/sem.h
  255.         c) Conflict in library functions
  256.         --------------------------------
  257.         In addition, if you have the nsl and crypt libraries these will
  258.         conflict with the required definitions. I think that libnsl.a
  259.         may be the Netware socket library (or something similar). In
  260.         any case, if you have these libraries, they will be added to
  261.         Makefile.global and you will need to remove them.
  262.         Thus, you should edit .../src/Makefile.global. Goto (approximately)
  263.         line 217 where LDFLAGS= is set and remove -lnsl and -lcrypt
  264.         from this line.
  265. ----------------------------------------------------------------------
  266. Section 2:      Deinstalling PostgreSQL
  267. ----------------------------------------------------------------------
  268. 2.1)    Why can't I move the executable files?
  269.         By default, the IRIX port uses the BSD compatible version of
  270.         install from /usr/bin/X11. If you read the man page for this
  271.         version of install, you will see that it is not meant for
  272.         end-user use; it has the interesting side-effect of chowning
  273.         files it installs to root.
  274.         You should still be able to delete the files as you (the
  275.         postgres user) will own the directory in which they are
  276.         stored.
  277.         The normal IRIX install program cannot be used easily as it
  278.         takes its arguments in the reverse order. It is therefore
  279.         recommended to use the GNU version of install (ginstall).
  280.         See Question 1.4
  281. ----------------------------------------------------------------------
  282. Section 3:      Extending PostgreSQL
  283. ----------------------------------------------------------------------
  284. 3.1)    How do I compile a C program to create a function for extending
  285.         PostgreSQL
  286.         Here is a sample command line:
  287.         cc -I/usr/local/PostgreSQL/include/ -I/usr/local/PostgreSQL/src/backend
  288.                 -shared -o funcs.so funcs.c
  289. ----------------------------------------------------------------------------
  290. Dr. Andrew C.R. Martin                             University College London
  291. EMAIL: (Work) martin@biochem.ucl.ac.uk    (Home) andrew@stagleys.demon.co.uk
  292. URL:   http://www.biochem.ucl.ac.uk/~martin
  293. Tel:   (Work) +44(0)171 419 3890                    (Home) +44(0)1372 275775