Linux下 gcc 编译常用参数 | 静态库-动态库 |

举报
墨理学AI 发表于 2022/01/10 23:16:38 2022/01/10
【摘要】 全网搜索 gcc相关知识,最终找到一个相对优秀的博文,推荐给大家; https://www.cnblogs.com/QG-whz/p/5456720.html 本博文仅仅是个引路和粗糙...

全网搜索 gcc相关知识,最终找到一个相对优秀的博文,推荐给大家;

本博文仅仅是个引路和粗糙备份

0

  • 使用外部库

2

4


测试示例–得到静态库


  • 三个代码文件如下:

hello.c


#include<stdio.h>
#include"hello.h"
void printHello()
{
	printf("hello moli \n");
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

hello.h

#ifndef _HELLO_
#define _HELLO_
void printHello();
#endif

  
 
  • 1
  • 2
  • 3
  • 4

main.c


#include<stdio.h>
#include"hello.h"
int main()
{
	printHello();
	return 0;
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 编译得到可执行文件
gcc hello.h hello.c main.c 

  
 
  • 1

6-1


  • 分别编译
gcc -c hello.c main.c 
ll

  
 
  • 1
  • 2
  • 效果如下:

6-2

  • AR 归档工具,rcs表示replace and create 得到静态库:
ar rcs lib.a hello.o main.o
ll


  
 
  • 1
  • 2
  • 3
  • 效果如下:
    6-3
  • 通过静态库来得到 可执行文件
gcc lib.a -o run

./run 

hello moli 


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

生成得到动态库


  • 得到动态库
gcc -shared -fPIC -o last.so hello.c

  
 
  • 1
  • 使用动态库(把 so 文件 链接到 主程序中)
gcc -o last.out main.c ./last.so 

./last.out 

hello moli 


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

so 动态库放到 特定位置,Linux 项目代码运行时可以找到,即可使用 ;


文章来源: positive.blog.csdn.net,作者:墨理学AI,版权归原作者所有,如需转载,请联系作者。

原文链接:positive.blog.csdn.net/article/details/114672005

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。