[OpenIndiana-discuss] undefined symbol __gnu_cxx::__pool<true>::_M_reserve_block(unsigned int, unsigned int)

Apostolos Syropoulos asyropoulos at yahoo.com
Mon Nov 4 19:55:26 UTC 2013


> 
> This problem can be solved by run the binaries as follows:
> 
> $ LD_NOLAZYLOAD=1 ./assistant
> 


Hello,

I have tried the binaries under oi_151.1.8 and I confirm that the binaries

work as expected without setting LD_NOLAZYLOAD=1! Now, I have encountered
another strange problem. I have compiled ffmpeg with gcc and it works just 
fine (sometime ago I could compile it with SunStudio but not anymore: it 
stops with some cryptic error message I did not have the time to investigate).
Now, I have tried ffDiaporama, a Qt application that uses the libraries 
that come with ffmpeg. I patched some of the source files and now everything
compiles but when it comes to linking I get:

Undefined                       first referenced
 symbol                             in file
avresample_close(AVAudioResampleContext*)     ../../../build/cBaseMediaFile.o
avresample_free(AVAudioResampleContext**)     ../../../build/cBaseMediaFile.o
avresample_convert(AVAudioResampleContext*, unsigned char**, int, int, unsigned char**, int, int) ../../../build/cBaseMediaFile.o
avresample_get_delay(AVAudioResampleContext*)     ../../../build/cBaseMediaFile.o
avresample_open(AVAudioResampleContext*)     ../../../build/cBaseMediaFile.o
avresample_available(AVAudioResampleContext*)     ../../../build/cBaseMediaFile.o
avresample_alloc_context()          ../../../build/cBaseMediaFile.o
ld: fatal: symbol referencing errors. No output written to ../../../build/ffDiaporama

These symbols are defined in libavresample which is included in the library list

-L/opt/gnu/lib -R/opt/gnu/lib -lavresample -lavformat -lavcodec -lavutil -lavfilter  -lswscale  -L/opt/gnu/lib -R/opt/gnu/lib  -ltag -lSDL -lexiv2 -lqimageblitz  -lintl -liconv -L/opt/gnu/qt4/lib -R/opt/gnu/qt4/lib -lQtSvg -lQtXml -lQtGui -lQtNetwork -lresolv -lsocket -lxnet -lnsl -lQtCore -lpthread -lrt

When I tried to merge an object file with an object file generated during ffmpeg's compilation that
defined two of these symbols, the linker complained that some symbols are defined two times, thus,
the linker "sees" the symbols but somehow fails to "put" them inside the final binary. In addition,
the following verifies (?) that this is true:

$ elfdump /opt/gnu/lib/libavresample.so|grep avresample_close
      [63]  0x0000e140 0x000000ac  FUNC GLOB  D    1 .text          avresample_close
     [182]  0x0000e140 0x000000ac  FUNC GLOB  D    1 .text          avresample_close
        54  [63]        avresample_close
      [58]  0x000203c0  0x00003afe  R_386_JMP_SLOT            avresample_close
  R_386_JMP_SLOT              0x203c0             .rel.plt       avresample_close

Does anyone have any suggestion/idea that might help me to finally produce the binary?

Regards,
A.S.


----------------------
Apostolos Syropoulos
Xanthi, Greece




More information about the OpenIndiana-discuss mailing list