Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Compiling a shared library

Posted on 2018-11-28 15:06 Prayer 阅读(202) 评论(0)  编辑 收藏 引用 所属分类: LINUX/UNIX/AIX
https://www.ibm.com/support/knowledgecenter/SSGH2K_12.1.0/com.ibm.xlc121.aix.doc/proguide/compiling_shared_aix.html

For use with dynamic linking

To compile a shared library that uses dynamic linking: 编译一个动态库,可以动态链接

  1. Compile each source file into an object file, with no linking. For example:
    xlc -c test1.c -o test1.oCopy
  2. Optional: Create an export file listing the global symbols to be exported, by doing one of the following:
    • Use the CreateExportList utility, described in Exporting symbols with the CreateExportList utility.
    • Use the -qexpfile compiler option with the -qmkshrobj option. The -qexpfile option saves all exported symbols from a list of given object files in a designated file. For example:
      xlc -qmkshrobj -qexpfile=exportlist test1.o test2.oCopy
    • Manually create an export file using a text editor. You can edit an export file to include or exclude global symbols from the target shared library.
  3. Use the -qmkshrobj option to create a shared library from the generated object files.
    • If you created an export file in step 2, use the -bE linker option to use your global symbol export list. If you do not specify a -bE option, all symbols are exported.
    For example:
    xlc -qmkshrobj -o mySharedObject.o test1.o test2.o -bE:exportlistCopy
    Notes
    • The default name of the shared object is shr.o, unless you use the -o option to specify another name.
    • Exporting some functions (such as restf# where # is a number) might cause incorrect execution.
  4. Optional: Use the AIX® ar command to produce an archive library file from multiple shared or static objects. For example:
    ar -rv libtest.a mySharedObject.o myStaticObject.oCopy
  5. Link the shared library to the main application, as described in Linking a library to an application.
    这种做法,还是生成了.a文件呀。

For use with runtime linking

To create a shared library that uses runtime linking: 创建一个动态库,可以运行时连接

  1. Follow steps 1 and 2 in the procedure described above.
  2. Use the -G option to create a shared library from the generated object files, and to enable runtime linking with applications that support it.
    • If you created an export file, use the -bE linker option to use your global symbol export list. If you do not specify a -bE option, all symbols are exported.
    For example:
    xlc -G -o libtest.so test1.o test2.o -bE:exportlist  Copy
  3. Link the shared library to the main application using the -brtl option, as described in Linking a library to an application.

Dynamic loading of a shared library

Shared libraries built for either dynamic or runtime linking can be dynamically loaded.
动态连接或运行时链接
See the AIX documentation for more information about using the dynamic loading routines:

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理