Question

I'm compiling some code which uses libcurl on a Debian Linux system. My dev machine is running Debian 5 but I want the binary to be usable on older Debian 4 systems too.

I find that if I specify -lcurl it will link to libcurl.so.4 but Debian 4 systems only have libcurl.so.3

Is there some way I can tell GCC to link to either libcurl.so.3 (which exists in both Debian 4 and 5) or just libcurl.so so it will use whatever version is available ?

Was it helpful?

Solution

You can pass the actual .so file instead of -l on the linker command line, and it ought to do what you want.

OTHER TIPS

Instead of using "-lcurl" use "-l:libcurl.so.3" And ofcourse also use "-L _installed_path_"

How about creating a symlink local to your project that links to .3, then you can just use -L at compile time. I'm not sure if you'd get a name conflict though, but you could always call it libcurl-old.so just in case.

I think the correct way to do that will be to use the --filter and --auxiliary flags of the linker.

They are not very documented, but should allow you to load symbols from different versions of the same library according to the machine you are installed on.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top