HPunix如何生成动态库?

HPunix系统生成动态库编译的方法?

创建PIC中间文件的编译器选项是+z,创建动态库德链接器标志是-b.

1. cc +z d1.c d2.c /* 编译以".o"为扩展名的中间目标文件dl.o和dl2.o 可以同时编译多个.c文件。

2. ld -b -o  dl.so d1.o d2.o /* 根据目标文件d1.o d2.o 创建动态库dl.so 可以有多个目标文件(.o文件)

3. cc dl.so 即生成可执行文件,默认是a.out

4. cc dl.so -o  add  生成add可执行文件。

与大部分系统不同的是HP-UNIX缺省使用".sl"做动态库的扩展名,我试了一下,当前的HP-UNIX需要指定动态库的扩展名。

uname -a

时间: 2024-11-05 18:35:59

HPunix如何生成动态库?的相关文章

linux 生成动态库时提示relocation R_X86_64_32 against `.rodata' can not be used when making a shared object;

linux生成动态库时遇到了relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC错误. 由于我的系统是AMD64位的,所以需要在编译的时候添加 -fPIC选项 解决方法: 例如: g++ -c -fPIC head.cpp    生成head.o g++ -fpic -shared -o libfun.so head.o linux 生成

GCC生成动态库

以下内容仅作为本人工作笔记 main.c 1 #include <stdio.h> 2 void hello(void); 3 int main(int argc, char ** argv) { 4 printf("This is main function!\n"); 5 hello(); 6 return 0; 7 } hello.c 1 #include <stdio.h> 2 void hello() { 3 printf("This is

cmake同时生成动态库与静态库的方法

我的目录结构 [[email protected] createLibrary]$ tree . ├── bin ├── build ├── CMakeLists.txt ├── include │   └── person.h ├── lib └── src ├── CMakeLists.txt ├── main │   ├── CMakeLists.txt │   └── main.cpp └── person ├── CMakeLists.txt └── person.cpp 7 dire

Linux生成动态库系统

Linux生成动态库系统 一个.说明 Linux下动态库文件的扩展名为 ".so"(Shared Object). 依照约定,全部动态库文件名称的形式是libname.so(可能在名字中增加版本). 这样.线程函数库被称作libthread.so. 静态库的文件名称形式是libname.a.共享archive的文件名称形式是libname.sa.共享archive仅仅是一种过渡形式,帮助人们从静态库转变到动态库. 小编综合自己学习体会以及网络上较好的内容.以简单的样例介绍动态库文件的生

gcc编译工具生成动态库和静态库之一----介绍

 1.库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 有别于静态库,动态库的链接是在程序执行的时候被链接的.所以,即使程序编译完,库仍须保留在系统上,以供程序运行时调用.(TODO:链接动态库时链接阶段到底做了什么) 2 静态库和动态库的比较 链接静态库其实从某种意义上来说也是一种粘贴复制,只不过它操作的对象是目标代码而不是源码而已.因为静态库被链接后

交叉编译sqlite3,生成动态库

1.下载源码,解压缩sqlite-autoconf-3300100.tar.gz 2.进入解压目录,执行: #:./configure --host=arm CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ --prefix=/usr 其中--host=要运行程序的主机 CC/CXX为用到的交叉编译工具链 --prefix=安装目录 3.make 将在当前文件目录下,自动生成可执行文件sqlite3及静态库文件sqlite3.a文件: 4.su

Linux下RabbitMQ的编译,生成动态库和静态库

一.步骤 1.代码托管处下载代码 最新:https://github.com/alanxz/rabbitmq-c/archive/master.zip 稳定:https://github.com/alanxz/rabbitmq-c/releases/download/v0.5.2/rabbitmq-c-0.5.2.tar.gz 下载到/home/kylin/test/下 2.解压缩至/home/kylin/test/,并进入目录cd /home/kylin/test/rabbitmq-c-...

c#生成动态库并加载

下面这段代码生成dll文件,不能编译运行.点击项目右键,点击生成,这时会在debuge文件中生成相应的配置文件. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data; using System.Data.OleDb; names

【转】Linux下gcc生成和使用静态库和动态库详解

一.基本概念 1.1 什么是库 在Windows平台和Linux平台下都大量存在着库. 本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同(主要是编译器.汇编器和连接器的不同),因此二者的库的二进制是不兼容的. 本文仅限于介绍linux下的库. 1.2 库的种类 linux下的库有两种:静态库和共享库(动态库). 二者的不同点在于代码被载入的时刻不同. 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大. 共享库的代码是在可