I have an application, which does a error when I try to run it:
/lib/libc.so.6: version `GLIBC_2.7\' not found
But the only symbol it needs
I found @felipec
s answer very helpful. In addition our application had to do some dynamic linking using ocaml, and we found that the given script doesn't work for this scenario, since it makes the application only export the __isoc99_sscanf symbol as a global.
GLIBC_2.7 {
global: *;
};
the above script resolves this issue and allows ocaml's dynamic linker to work properly. using the -D_GNU_SOURCE
option alone wasn't enough to avoid this issue since the dependency on GLIBC_2.7 came from a prebuilt binary we were statically linking with.
Your second version works with this script:
GLIBC_2.7 {
global: __isoc99_sscanf;
local: *;
};
Using -Wl,--version-script=script.txt
, however, I don't know how to access the original sscanf@GLIBC_2.4
.
Anyway, perhaps you would want to use -D_GNU_SOURCE
instead; to avoid __isoc99_sscanf
altogether.