[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 261
  • Last Modified:

Two library versions with autoconf

Here's my problem: I have a program (server) that uses library libfoo. I maintain it with CVS and GNU machinery (autoconf, automake, libtool and family). Now, I want to have two versions of server running on my system: old branch using libfoo version 1, and new one using libfoo version 2, so that another programmer can continue his work on client, while I test new features in the server. But autoconfigured makefile creates (with libtool) library with version 0.0.0 and I cannot find where to change that.

So:

How can I make libtool create libraries with another version numbers?

And:

What changes should I make in config.in or Makefile.am to link server with libfoo.so.1, not libfoo.so.0?

Help, please!
0
Robson
Asked:
Robson
  • 3
  • 3
1 Solution
 
ahoffmannCommented:
what you want to do is not a task for autocnf, usually.
You do it by moving the library to a new name, like
    mv libfoo.so libfoo.so.1.0

But you may try to set the VERSION variable in configure.in, like:
     VERSION=1.0

Or you simply add a command to target which generates the library in Makefile.in, like:
     libfoo.so: ($LIBOBJS)
          $(LD) .... whatevercomeshere
          mv $@ $@.1.0
0
 
RobsonAuthor Commented:
I've added this line to Makefile.am in library project:

libfoo_la_LDFLAGS = -version-info 1:0:0

and now makefile creates files with 1.0.0 names (and different version) I haven't figured out how to link program with either 1.0 or 0.0 version when both of them exist in library search path (now I'm keep them in separate directories and switching with gcc -L option).
0
 
ahoffmannCommented:
if you have the libs in separate directories, you can use the LD_LIBRARY_PATH environment variable to switch these directories when running the program
0
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

 
RobsonAuthor Commented:
I already know that. What still bothers me is how to specify library version for compilation.
0
 
RobsonAuthor Commented:
After carefully reading documentation I came to a conclusion that switching LD_LIBRARY_PATH at runtime and -Llibrary_directory at compilation time is the best idea. Thanks for your comments!
0
 
ahoffmannCommented:
LD_LIBRARY_PATH is roughly 20 years old, not bad that technic, isn't it ;-)
0

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now