C语言 如何更改已编译二进制文件的lib版本



当我阅读共享库时,这些疑问开始向我袭来。

1 .-------------------------------------------假设我已经像下面这样编译了,

test  : main.o libtest.so.2
  gcc main.o -L ../../lib -ltest -o test
libtest.so.2  : version2.c
  gcc -Wall -fPIC -c version2.c
  gcc -shared -Wl,-soname,libtest.so -o libtest.so.2.0 version2.o
  ln -sf libtest.so.2.0 libtest.so
  mv libtest.s* ../../lib
main.o  : main.c
  gcc -c main.c

给出-ltest后,库应该始终是libtest.so的软链接。正确吗?那么,如果我为另一个二进制文件寻找libtest的更高版本,而前者需要旧版本呢?我该如何处理呢?

2 .-------------------------------------------------------------------------我有一些库,我不希望将它们包含在LD_LIBRRAY_PATH中,因为每个人都必须搜索与它们完全相关的这个文件夹。

1。必须使用-soname:

设置版本号
gcc -shared -Wl,-soname,libtest.so.2 -o libtest.so.2.0 version2.o

链接器将前者与libtest.so绑定。

libtest.so.

2。仅在启动应用程序时设置LD_LIBRARY_PATH,您可以创建shell脚本:

LD_LIBRARY_PATH=/path/to/your/libs ./my_app

最新更新