Re: Default LDFLAGS in build system - possible problems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2/28/19 9:46 AM, Tom Hughes wrote:
> On 28/02/2019 08:30, Zdenek Dohnal wrote:
>
>> I tried to manually run configure script for Vim, with ruby support
>> enabled, but it always failed with error message about missing ncurses
>> (ncurses-devel was installed though). When I looked into config.log,
>> I saw:
>>
>> configure:12069: gcc -o conftest -g -O2  -L. -Wl,-z,relro   -Wl,-z,now
>> -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fstack-protector
>> -rdynamic -Wl,-export-dynamic  -L/usr/local/lib conftest.c  -lselinux
>> -lncurses >&5
>> conftest.c: In function 'main':
>> conftest.c:67:26: warning: implicit declaration of function 'tgetent'
>> [-Wimplicit-function-declaration]
>>   char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");
>>                            ^~~~~~~
>> /usr/bin/ld: /tmp/ccivPtT5.o: relocation R_X86_64_32 against
>> `.rodata.str1.1' can not be used when making a PIE object; recompile
>> with -fPIC
>> /usr/bin/ld: final link failed: nonrepresentable section on output
>> collect2: error: ld returned 1 exit status
>>
>> Adding -fPIC actually solved it, but why does the script want it in the
>> first place? Then I ran configure without ruby support enabled and it
>> passed... again from config.log I found out that script wants ruby's
>> LDFLAGS, because script needs them for compilation of ruby support and
>> Ruby LDFLAGS are:
>
> You don't need -fPIC but you need -fPIE at least.
>
> The simple rule is that if you're going to link with Fedora's
> linker flags (which you are doing here) then you need to compile
> with Fedora's compiler flags, 
That was it :) - configure script was using LDFLAGS embedded in ruby,
but it did not use CFLAGS. Thank you for the hint!
> which would have included -fPIE if
> you didn't already specify -fPIE or -fPIC on the command line.
>
> So make sure you tell configure to use $RPM_OPT_FLAGS when
> compiling - if you use %configure and the configure script is
> not too silly then that should happen automatically.
>
> There is a reasonable argument here that the pkgconfig file
> that our ruby package installs is broken, because it embeds
> our linker flags without embedding our compiler flags.
>
> So "pkg-config --libs ruby" tells you to link with those
> flags but "pkg-config --cflags ruby" doesn't give you matching
> compiler flags.
>
> That said, the ruby.pc file may be assuming that it will be
> used for building ruby extensions, which would be .so files
> and hence use -fPIC anyway...
>
> Tom
>
-- 
Zdenek Dohnal
Associate Software Engineer
Red Hat Czech - Brno TPB-C


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux