undefined versioned symbol name __register_frame_info@@GLIBC_2.0

undefined versioned symbol name __register_frame_info@@GLIBC_2.0

i'm attempting to compile a dll on linux. all i changed in my Makefile was CC (from gcc to icc). can anyone point me to a fix?


icc -o CENTREXMWPBX.DLL CentrexMWPbx.o ../../CsUtil.o ../../hash.o ../../ListUtil.o ../../Log.o ../generic/Network.o ../../OdbcUtil.o ../generic/Route.o ../generic/Trunk.o -L/usr/openlink/odbcsdk/lib -liodbc -lm -lc -shared
ld: CENTREXMWPBX.DLL: undefined versioned symbol name __register_frame_info@@GLIBC_2.0
ld: failed to set dynamic section sizes: Bad value

5 posts / 0 nouveau(x)
Dernière contribution
Reportez-vous à notre Notice d'optimisation pour plus d'informations sur les choix et l'optimisation des performances dans les produits logiciels Intel.

You'll need to change more than that. The nearest equivalent on linux to .dll, for most purposes, would be a .so

this is a linux app, not windows. it's compiled for years with gcc. i'm just testing icc. found that if i linked directly via ld instead of icc, it works just fine. you can name the dynamic object anything you like, it's just customary to use .so for shared libraries. this is a windows app that i ported to linux therefor, i left the names the same.

problem solved.

Hello scottdudley,
Could you please try this - remove libc (-lc) from the list of libraries you are using during linking.
Even I faced the same problem and it got solved when I removed -lc from command line.


A compiler option that might be helpful is
This will "show driver tool commands but do not execute tools" from the compiler help. You can see what commands icc is passing to ld to do the link, and might help find the difference when you invoke ld directly yourself.

Connectez-vous pour laisser un commentaire.