[vlc-devel] X265 contrib link error against master generation

Gilles Sabourin gilles.sabourin at free.fr
Fri Oct 6 21:00:53 CEST 2017


Le samedi 30 septembre 2017, 06:12:11 CEST Sean McGovern a écrit :
> Hi Gilles,
> 
> On Sat, Sep 30, 2017 at 2:45 AM, Gilles Sabourin
> 
> <gilles.sabourin at free.fr> wrote:
> > Hello team,
> > 
> > Shortly after the beginning, vlc master compilation is failing with this
> > link error:
> > 
> > /usr/lib64/gcc/x86_64-suse-linux/5/../../../../x86_64-suse-linux/bin/ld:
> > /usr/
> > src/packages/BUILD/vlc-beta-3.0.0/contrib/x86_64-suse-linux/lib/libx265.a
> > (cpu- a.asm.o): relocation R_X86_64_PC32 against symbol
> > `x265_intel_cpu_indicator_init' can not be used when making a shared
> > object; recompile with -fPIC
> > /usr/lib64/gcc/x86_64-suse-linux/5/../../../../x86_64-suse-linux/bin/ld:
> > final link failed: Bad value
> > collect2: error: ld returned 1 exit status
> > Makefile:16940: recipe for target 'libx265_plugin.la' failed
> > make[4]: *** [libx265_plugin.la] Error 1
> > 
> > X265 contrib itself compile well : no error.
> > 
> > The issue has been here for more then 7 days, this was the case, last
> > 23rd.
> 
> I have seen the same issue.
> 
> It has been this way for much longer than 7 days. I've resorted to
> using the x265 package from my distribution.
> 
> I suspect that x265_intel_cpu_indicator_init() is not supposed to be
> externally visible -- it's not in the API.
> 
> -- Sean McG.
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel

Sean,

There has been no version bump for x265 and this issue has appeared recently. 
Last Saturday 16th, vlc still compiled successfully...

So I have a look at vlc master tree and I found this commit:


Author: Hugo Beauzée-Luyssen <hugo at beauzee.fr>
Date:   Mon Sep 18 10:22:52 2017 +0200

    modules: x265 is a C++ module

diff --git a/modules/codec/Makefile.am b/modules/codec/Makefile.am
index 10eb160d36..da49a0704f 100644
--- a/modules/codec/Makefile.am
+++ b/modules/codec/Makefile.am
@@ -475,9 +475,9 @@ endif
 
 ### X26x encoders ###
 
-libx265_plugin_la_SOURCES = codec/x265.c
+libx265_plugin_la_SOURCES = codec/x265.c dummy.cpp
 libx265_plugin_la_CPPFLAGS = $(AM_CPPFLAGS)
-libx265_plugin_la_CFLAGS = $(AM_CFLAGS) $(CFLAGS_x265)
+libx265_plugin_la_CXXFLAGS = $(AM_CFLAGS) $(CFLAGS_x265)
 libx265_plugin_la_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_x265) -rpath '$
(codecdir)'
 libx265_plugin_la_LIBADD = $(LIBS_x265)
 EXTRA_LTLIBRARIES += libx265_plugin.la

I reverted it and I was able to link successfully with x265. I think this 
commit is wrong : x265 team has developed his library using C++, but this does 
not imply that their API is only reachable using C++...

In any case, this is working like that for months/years. Especially when there 
has been no x265 version bump in contribs recently, hence no API change. I am 
not developer at all, this is not my job, but I have a logical approach, and I 
do not understand why this would have suddenly changed.

Maybe you can talk to each other, if you don't want to talk to me, because I 
am only "a user"...

Best,
Gilles


More information about the vlc-devel mailing list