unix的AIX,xlc生成动态库后为什么还要用ln -s 对*.so动态库生成软连接为*.a

原创 2016年08月19日 09:48:41

在一次偶然的机会中,查看公司(公司用的是unix aix编译器xlc)库代码在看到Makefile 时,发现其后面对生成的动态库进行了软连接的操作。

{ 这边插入一个知识点,在unxi,aix,xlc编译器生成动态库和静态库的方法:

动态库: xlC -bh:5 -G -o lib**.so   obj1.o obj2.o obj3.o
    (注意:xlC -bh:5 是连接link语法,生产动态库只要在链接时加入 -G 即可)
静态库: ar -r lib**.a obj1.o obj2.o obj3.o
}

在生产动态库后面发下了还有一条命令ln -s lib**.so lib**.a命令;
后面经查看xlc使用说明得到答案。(可以在命令窗口直接输入 xlc即可查看他的使用手册)

在xlc使用手册中有以下说明:

-g Produce information for the debugger.
-G Tells the linkage editor to create a dynamic library.
-I<dir> Search in directory <dir> for include files that
do not start with an absolute path.
-l<key> Search the specified library file,
where <key> selects the file lib<key>.a.
-L<dir> Search in directory <dir> for files specified by -l<key>.

其中:
-l<key> Search the specified library file,
where selects the file lib.a. <\font>

这个描述的是在编译运行程序代码,连接操作时连接库的使用方法 ,这里已经说明了,link时其后面的-l,xcl他找的是.a后缀的库文件。所以才会出现我一开始说的问题,makefile 在生成动态库之后,用ln -s对动态库lib**.so 软连接成lib**.a了。

这里贴上公司生产动态库的makefile 一段贴上来:

shared_public: $(TARGET_SHARED_PUBLIC)
$(TARGET_SHARED_PUBLIC): $(PUBLIC_OBJS)
$(LINK) $(SHARED) -o $@ $(PUBLIC_OBJS)
-cd $(SHARED_PATH); ln -s lib$(PUBLIC_NAME).so lib$(PUBLIC_NAME).a

Linux出现sudo ln -s /lib/x86_64-linux-gnu/libssl.so.1.0.0 /usr/local/lib/libssl.so.1.0.0

问题:/usr/bin/python: /usr/local/lib/libssl.so.1.0.0: no version information available (required by /u...
  • disadministrator
  • disadministrator
  • 2017年08月03日 18:36
  • 584

Linux命令之ln

硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux 虚拟文件系统 (VFS) 的四个基本概念之...
  • u012668018
  • u012668018
  • 2015年05月16日 18:14
  • 658

Linux下动态库的创建与链接

连接和运行时库文件搜索路径到设置 库文件在连接(静态库和共享 库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般Linux 系统把 /lib 和 /usr/lib 两...
  • WOSHIZHOUWANLI
  • WOSHIZHOUWANLI
  • 2017年02月08日 17:29
  • 391

aix或者linux 软连接

上次和老朱一起干活,看见老朱把ln用成这样,简直是佩服(ha+oracle,有参数文件和admin下的dump目录在本地磁盘上,他通过软连接连接到共享存储,当然另外一台也通过一样的方法连接到共享存储,...
  • yujin2010good
  • yujin2010good
  • 2012年11月23日 00:18
  • 4081

ln -s建立的链接如何删除

用unlink或者rm命令都可以 可以用ls -l查看
  • kepa520
  • kepa520
  • 2015年07月24日 09:25
  • 378

ln 的用法及libpython2.6.so.0.1找不到的问题

ln -s 源文件  目标文件 ln -s libpython2.7.so.0.1  libpython2.6.so.0.1
  • majinfei
  • majinfei
  • 2013年11月15日 09:09
  • 1039

linux创建软链接命令-ln -s

linux 创建连接命令 ln -s 软链接 这是linux中一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s, 具体用法是:...
  • IndexMan
  • IndexMan
  • 2013年05月29日 12:13
  • 31262

linux ln 命令使用参数详解(ln -s 软链接)

这是linux中一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件。 当 我们需要在不同...
  • u014696921
  • u014696921
  • 2016年12月10日 16:50
  • 6140

AIX操作、与服务错误

编辑: a  输入 xx 回删 错误1: root@localhost:[/]svn --version exec(): 0509-036 Cannot load program svn beca...
  • MiltonZhong
  • MiltonZhong
  • 2015年04月27日 17:05
  • 1564

关于动态链接库及使用动态链接的优点

 关于动态链接库   动态链接允许一个模块仅需载入或执行一个导出的DLL函数。动态链接不同于我们熟悉的静态链接,使用静态链接时,链接程序会把库函数代码拷贝到每个需要的模块中。动态链接的类型  调用一个...
  • dtdn
  • dtdn
  • 2005年02月24日 16:39
  • 6195
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unix的AIX,xlc生成动态库后为什么还要用ln -s 对*.so动态库生成软连接为*.a
举报原因:
原因补充:

(最多只允许输入30个字)