源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

linux生成(加载)动态库静态库和加载示例方法

  • 时间:2022-01-07 09:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:linux生成(加载)动态库静态库和加载示例方法
[b]动态库的生成:[/b] 1、/*mysum.c*/
[u]复制代码[/u] 代码如下:
#include <stdio.h> #include "src.h" int sum(int a,int b) { return (a+b); }
  2、/*mysum.h*/
[u]复制代码[/u] 代码如下:
#ifndef __SRC_H__ #define __SRC_H__ int sum(int a,int b); #endif
  3、/*main.c*/
[u]复制代码[/u] 代码如下:
#include <stdio.h> extern int sum(int a,int b); /* #include <stdio.h> #include "mysum.h" */ int main() { int a,b,c=0; printf("input a and b:\n"); scanf("%d %d",&a,&b); c = sum(a,b); printf("c = %d\n",c); return 0; }
  [b]4、生成动态库 [/b]
[u]复制代码[/u] 代码如下:
gcc -c -fPIC mysum.c mysum.h //生成mysum.o文件 gcc -shared -fPIC -o libmysum.so mysum.o //生成动态库文件,默认的命名方式为lib+名称.so
  [b]5、动态库静态加载 [/b]
[u]复制代码[/u] 代码如下:
gcc -o main main.c -L. -lmysum -Wall 或 gcc -o main main.c -lmysum -Wall
6、执行 ./main时会报告错误,提示无法加载libmysum.so共享库。 7、处理方法有三: 方法一: 将动态库拷贝到 /lib或 /usr/lib中去 如:sudo cp libmysum.so /lib 方法二: 改变环境变量: LD_LIBRARY_PATH=$PWD export LD_LIBRARY_PATH 方法三: 在编译时指定共享库的路径: gcc -o main1 -Wl,-rpath,.-L. -louyang main.o
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部