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

相关文章推荐

aix中使用xlc编译生成动态链接库(shared object)(.so)文件的方法

今天写一个ppt的时候,忽然发现不会用xlc编译成出.so文件,于是baidu,未果。 后cc看了一些命令的选项后,查到了编译的选项 。 假设我有hellofirst.c和hellosecond....

AIX环境下,调用动态库以及静态库

前提知识: 动态库后缀.so  静态库后缀.a -c  只编译不链接 -o  指定输出名 -L 指定链接库的查找路径 -l 指定链接的库名 -I 文件里面包含了头文件,-I后面跟着查找头文...

在AIX平台如何创建动态库

对UNIX 平台,动态库的创建大同小异,都是通过编译器(实际上为ld )生 成。除此之外, 在AIX 平台,系统提供了丰富的工具创建动态库。 从大的范围看有两种不同的...

aix动态库(.so)编译使用

AIX 下通常用xlC来编译c++代码,例如我写了一个string的类,包含俩文件 string.h 和 string.cpp 现在我想将其编译成动态链接库(.so文件) 步骤为:1.$(CC) -q...

Linux之动态库的创建和使用

Linux下动态库生成和使用一.动态库的基本概念1.动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序。动态链接库是目标文件的集合,目标文件在动态链接库中的组...
  • tigerjb
  • tigerjb
  • 2011年11月20日 09:45
  • 8803

makefile与动态链接库案例分析——动态库链接动态库

背景:效率考虑,要重用把服务器主备机方案,以库Libmdpha(高可用)的形式加进主工程dds(调度数据服务器)。 有源代码,打算直接编译Libmdpha.so.xxx,加入主工程dds。复制动态...

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

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

window平台下动态库与静态库生成与使用(C++)

window平台下动态库与静态库生成与使用(C++)动态库动态库的生成vs的设置自行百度,废话不多讲,上代码:代码参考:http://blog.chinaunix.net/xmlrpc.php?r=b...

Linux-(C/C++)动态链接库生成以及使用(libxxx.so)

Linux中so文件为共享库,与windows下dll类似,不过实现要简单。 so可以供多个进程使用,不同进程调用同一个so文件,所使用so文件不用。 so文件源程序不需要main函数,有也不会被执行...

静态库*.a和动态库*.so生成及调用

gcc编译器工具一般位于/usr/bin或者/usr/local/bin目录,但它会从其它位置运行各种编译器支持的应用程序,这个位置可能是   /usr/lib/gcc-lib/目录,GNU C/C...
  • rosetta
  • rosetta
  • 2011年08月22日 17:35
  • 2914
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unix的AIX,xlc生成动态库后为什么还要用ln -s 对*.so动态库生成软连接为*.a
举报原因:
原因补充:

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