fixing Makefile.shlib for solaris/gcc with -m64 flag
Hello All,
When I compile with gcc on Solaris with -m64 flags, all shared lbiraries fail.
Can someone fix the following in Makefile.shlib
ifeq ($(PORTNAME), solaris)
ifeq ($(GCC), yes)
LINK.shared = $(CC) -shared
else
LINK.shared = $(CC) -G $(CFLAGS) # CFLAGS added for X86_64
endif
It should be
ifeq ($(PORTNAME), solaris)
ifeq ($(GCC), yes)
LINK.shared = $(COMPILER) -shared
else
LINK.shared = $(CC) -G $(CFLAGS) # CFLAGS added for X86_64
endif
Thanks.
Regards,
Jignesh
"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:
It should be
LINK.shared = $(COMPILER) -shared
Why? What's the difference, and why is it appropriate to fix it that
way instead of by changing CFLAGS?
regards, tom lane
simple if I use -m64 for 64 bit then all end binaries are generated 64-bit and the shared libraries
are generated 32-bit and the compilation fails (ONLY ON SOLARIS) since that particular line is only
for the condition Solaris AND gcc.
If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it and generates shared
libraries 64-bit and the compile continues..
I just tested it out.
-Jignesh
Tom Lane wrote:
Show quoted text
"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:
It should be
LINK.shared = $(COMPILER) -sharedWhy? What's the difference, and why is it appropriate to fix it that
way instead of by changing CFLAGS?regards, tom lane
"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:
simple if I use -m64 for 64 bit then all end binaries are generated 64-bit and the shared libraries
are generated 32-bit and the compilation fails (ONLY ON SOLARIS) since that particular line is only
for the condition Solaris AND gcc.
If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it and generates shared
libraries 64-bit and the compile continues..
Hmm ... I see we're doing it that way already for some other platforms,
but I can't help thinking it's a kluge. Wouldn't the correct answer be
that -m64 needs to be in LDFLAGS?
regards, tom lane
Am Mittwoch, 17. Januar 2007 17:12 schrieb Tom Lane:
"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:
simple if I use -m64 for 64 bit then all end binaries are generated
64-bit and the shared libraries are generated 32-bit and the compilation
fails (ONLY ON SOLARIS) since that particular line is only for the
condition Solaris AND gcc.If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it
and generates shared libraries 64-bit and the compile continues..Hmm ... I see we're doing it that way already for some other platforms,
but I can't help thinking it's a kluge. Wouldn't the correct answer be
that -m64 needs to be in LDFLAGS?
The correct answer may be to put -m64 into CC.
--
Peter Eisentraut
http://developer.postgresql.org/~petere/
I tried that but it didn't work.
Also on Solaris it typically uses the ld in /usr/ccs/bin/ld which uses "-64" as its flag for 64 bit
and if you put LDFLAGS out there it will fail as unrecognized unless gcc parses -64 to -m64.
Putting -m64 in CC will do the workaround but then I guess that's what CFLAGS is for..
Regards,
Jignesh
Tom Lane wrote:
Show quoted text
"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:
simple if I use -m64 for 64 bit then all end binaries are generated 64-bit and the shared libraries
are generated 32-bit and the compilation fails (ONLY ON SOLARIS) since that particular line is only
for the condition Solaris AND gcc.If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it and generates shared
libraries 64-bit and the compile continues..Hmm ... I see we're doing it that way already for some other platforms,
but I can't help thinking it's a kluge. Wouldn't the correct answer be
that -m64 needs to be in LDFLAGS?regards, tom lane
Peter Eisentraut <peter_e@gmx.net> writes:
Am Mittwoch, 17. Januar 2007 17:12 schrieb Tom Lane:
"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:
simple if I use -m64 for 64 bit then all end binaries are generated
64-bit and the shared libraries are generated 32-bit and the compilation
fails (ONLY ON SOLARIS) since that particular line is only for the
condition Solaris AND gcc.If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it
and generates shared libraries 64-bit and the compile continues..Hmm ... I see we're doing it that way already for some other platforms,
but I can't help thinking it's a kluge. Wouldn't the correct answer be
that -m64 needs to be in LDFLAGS?
The correct answer may be to put -m64 into CC.
Did we conclude that that was a satisfactory solution, or is this still
a live patch proposal?
If -m64 in CC is the right solution, it should probably be mentioned in
FAQ_Solaris.
regards, tom lane
I dont think we solved this.. But I think the way to put -m64 should be same as in Linux and Solaris
and not different.
Thanks.
Regards,
Jignesh
Tom Lane wrote:
Show quoted text
Peter Eisentraut <peter_e@gmx.net> writes:
Am Mittwoch, 17. Januar 2007 17:12 schrieb Tom Lane:
"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:
simple if I use -m64 for 64 bit then all end binaries are generated
64-bit and the shared libraries are generated 32-bit and the compilation
fails (ONLY ON SOLARIS) since that particular line is only for the
condition Solaris AND gcc.If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it
and generates shared libraries 64-bit and the compile continues..Hmm ... I see we're doing it that way already for some other platforms,
but I can't help thinking it's a kluge. Wouldn't the correct answer be
that -m64 needs to be in LDFLAGS?The correct answer may be to put -m64 into CC.
Did we conclude that that was a satisfactory solution, or is this still
a live patch proposal?If -m64 in CC is the right solution, it should probably be mentioned in
FAQ_Solaris.regards, tom lane
OK, I have made Solaris gcc the same as Linux in Makefile.shlib, patch
attached.
I am not backpatching this. We will get this tested for 8.3.
---------------------------------------------------------------------------
Jignesh K. Shah wrote:
I dont think we solved this.. But I think the way to put -m64 should be same as in Linux and Solaris
and not different.Thanks.
Regards,
JigneshTom Lane wrote:
Peter Eisentraut <peter_e@gmx.net> writes:
Am Mittwoch, 17. Januar 2007 17:12 schrieb Tom Lane:
"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:
simple if I use -m64 for 64 bit then all end binaries are generated
64-bit and the shared libraries are generated 32-bit and the compilation
fails (ONLY ON SOLARIS) since that particular line is only for the
condition Solaris AND gcc.If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it
and generates shared libraries 64-bit and the compile continues..Hmm ... I see we're doing it that way already for some other platforms,
but I can't help thinking it's a kluge. Wouldn't the correct answer be
that -m64 needs to be in LDFLAGS?The correct answer may be to put -m64 into CC.
Did we conclude that that was a satisfactory solution, or is this still
a live patch proposal?If -m64 in CC is the right solution, it should probably be mentioned in
FAQ_Solaris.regards, tom lane
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://www.enterprisedb.com
+ If your life is a hard drive, Christ can be your backup. +