Re: lang/lua: /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

From: O. Hartmann <ohartman_at_zedat.fu-berlin.de>
Date: Thu, 29 Dec 2011 13:59:11 +0100
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?
> 
> 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


Received on Thu Dec 29 2011 - 11:59:13 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:22 UTC