Обсуждение: Build 8.2 with an old linker
I could not build Postgresql 8.2 with an old linker. I complained about a wrong syntax of version-script when linking libpq. I solved it by adding an arbitrary version-name to the script, and everything seems to work now. Is it really that simple? If it is, I would suggest to make the change in the main source. I know that few use that old systems, but as long as compatibility can be retained, there is no need to brake it. [root@linux lib]# gcc --version 2.96 [root@linux lib]# ld --version GNU ld 2.10.91 Copyright 2001 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License. This program has absolutely no warranty. Supported emulations: elf_i386 i386linux elf_i386_glibc21 ------ PATCH START HERE ------- --- postgresql-8.2.0/src/interfaces/libpq/Makefile.old Fri Dec 15 15:57:52 2006 +++ postgresql-8.2.0/src/interfaces/libpq/Makefile Fri Dec 15 15:58:53 2006 @@ -140,7 +140,7 @@ $(shlib): exports.list exports.list: exports.txt - echo '{ global:' >$@ + echo 'VERSION { global:' >$@ $(AWK) '/^[^#]/ {printf "%s;\n",$$1}' $< >>$@ echo ' local: *; };' >>$@ ------ PATCH END HERE ------- -- Thorkil Olesen, Hanstholm, Denmark.
"Thorkil Olesen" <thorkil@pip.dknet.dk> writes: > --- postgresql-8.2.0/src/interfaces/libpq/Makefile.old Fri Dec 15 15:57:52 > 2006 > +++ postgresql-8.2.0/src/interfaces/libpq/Makefile Fri Dec 15 15:58:53 > 2006 > @@ -140,7 +140,7 @@ > $(shlib): exports.list > exports.list: exports.txt > - echo '{ global:' >$@ > + echo 'VERSION { global:' >$@ > $(AWK) '/^[^#]/ {printf "%s;\n",$$1}' $< >>$@ > echo ' local: *; };' >>$@ Done, thanks for the suggestion. regards, tom lane
"Thorkil Olesen" <thorkil@pip.dknet.dk> writes: > exports.list: exports.txt > - echo '{ global:' >$@ > + echo 'VERSION { global:' >$@ Actually ... on second look, doesn't that change the semantics? We are not trying to establish a versioned API here, only restrict symbol visibility. I think if we do the above we just created a versioned API with a version name of "VERSION", which does not seem like a good idea. regards, tom lane
Den 28/12/2006 kl. 0.57 skrev Tom Lane: > "Thorkil Olesen" <thorkil@pip.dknet.dk> writes: >> exports.list: exports.txt >> - echo '{ global:' >$@ >> + echo 'VERSION { global:' >$@ > > Actually ... on second look, doesn't that change the semantics? > > We are not trying to establish a versioned API here, only restrict > symbol visibility. I think if we do the above we just created a > versioned API with a version name of "VERSION", which does not seem > like a good idea. You might be right. I'd think that if the name will never be changed, it would mean the same thing, but I don't know really. I just know that it solved my build-problem, and I wanted to share that information with the list. (Probably some more meaningful name than 'VERSION' could be chosen.) Thank you for the comments. Best regards, Thorkil. -- Thorkil Olesen, Hanstholm Tel. +45 97 96 00 19