Re: Bug #448: 7.1.3 interfaces build fail on solaris w. gcc
| От | Peter Eisentraut |
|---|---|
| Тема | Re: Bug #448: 7.1.3 interfaces build fail on solaris w. gcc |
| Дата | |
| Msg-id | Pine.LNX.4.30.0109120132190.680-100000@peter.localdomain обсуждение исходный текст |
| Ответ на | Bug #448: 7.1.3 interfaces build fail on solaris w. gcc (pgsql-bugs@postgresql.org) |
| Список | pgsql-bugs |
> Bob Deblier (bob@virtualunlimited.com) reports a bug with a severity of 1
> This shouldn't be too hard to fix by adding the -lsocket and -lnsl libraries.
Done.
> Furthermore the dynamic linking of libraries is wrong. You use the -G
> option, which is appropriate for Sun's compilers, but not for gcc.
> With gcc, you have to use the '-shared' option.
GCC documents -G for shared libraries, and people have been using that for
years. But it's probably not worth figuring this out since -shared is
clearly preferred.
> Hence all shared libraries fail to build because with a missing 'main'
> symbol. When this happens, the make process just continues, instead of
> aborting with an error.
Hmm, that's an interesting effect.
> Maybe you should switch to building with libtool?
Nope. ;-)
> Anyway, I'd appreciate it if I could directions to fix these problems.
1. in src/interfaces/odbc/GNUmakefile, change
SHLIB_LINK = $(filter -lm, $(LIBS))
to
SHLIB_LINK = $(filter -lm -lnsl -lsocket, $(LIBS))
2. in src/Makefile.shlib, change
LINK.shared = $(COMPILER) -G
into
ifndef cplusplus
ifeq ($(GCC), yes)
LINK.shared = $(CC) -shared
else
LINK.shared = $(CC) -G
endif
else
ifeq ($(GXX), yes)
LINK.shared = $(CXX) -shared
else
LINK.shared = $(CXX) -G
endif
endif
(Or just change the -G if you don't care about generality.)
--
Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter
В списке pgsql-bugs по дате отправления: