On 29.12.2011 13:59 (UTC+1), O. Hartmann wrote:
Am 12/29/11 13:34, schrieb Daniel Kalchev:


On 29.12.11 14:19, O. Hartmann wrote:
Am 12/29/11 12:59, schrieb Kostik Belousov:
On Thu, Dec 29, 2011 at 12:19:40PM +0100, O. Hartmann wrote:
[...]
/usr/bin/ld: lapi.o: relocation R_X86_64_32 against `luaO_nilobject_'
can not be used when making a shared object; recompile with -fPIC
lapi.o: could not read symbols: Bad value
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
*** Error code 1

Stop in /usr/ports/lang/lua/work/lua-5.1.4/src.
*** Error code 1

Stop in /usr/ports/lang/lua/work/lua-5.1.4/src.
*** Error code 1

Stop in /usr/ports/lang/lua/work/lua-5.1.4.
*** Error code 1

Stop in /usr/ports/lang/lua.

===>>>   make failed for lang/lua
===>>>   Aborting update

Terminated
Terminated

This is very strange!
What is strange ? It is exactly the same problem as in the first message
started this thread. You must use -fPIC flag for compiler when compiling
objects that shall be later linked into dso. So, for lua case, -fPIC
must be present on the cc -c command line.
This therefore strange, since this problem with lua occurs on machines,
where I've set "CFLAGS=" and "COPTFLAGS=" as in
/usr/share/examples/etc/make.conf and on one box, one box I accidentally
set those flags to "CFLAGS+=" and "COPTFLAGS+=" and there it works and
the -fPIC flag is set by the FreeBSD's port framework.

So I guess there is a bug introduced with one of the last Mk-files
updates.


As suggested by the "howto" for using newer GCC versions,
http://www.freebsd.org/doc/en/articles/custom-gcc/article.html you are
supposed to use CFLAGS+= to add additional compile flags.

Just for the record I'd like to repeat, that the error above mentioned
is also with the legacy FreeBSD's gcc 4.2.X compiler.

As Kostik Belousov made clear in his last posting, the error occurs due
to a missing -fPIC - which is now clear to me.

People not sleeping with their OS, like myself, would simply copy the
make.conf from /usr/share/examples/etc/ and set some additional flags.
Then the problem will occur again. Maybe it would be wise to reflect
this issue by some additional words in make.conf?

As stated earlier, the following fails in /etc/make.conf for lang/lua:

  CFLAGS= -O2 -fno-strict-aliasing -pipe -msse3

The next one works ( += instead of = ) and -fPIC is preserved this way:

  CFLAGS+= -O2 -fno-strict-aliasing -pipe -msse3

Thanks, Kostik and Daniel for clearing this. I think, like Oliver, that this should be mentioned in /etc/make.conf or make.conf(5).

Rainer

By the way, "-O2 -fno-strict-aliasing -pipe" are the default flags, that
are used when CFLAGS is not set by the user.

COPTFLAGS is used only to build the kernel and doing it with non-system
GCC is not likely to be safe.

Daniel


Oliver

_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to