首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Eclipse编译:打包静态库文件

  • 23-09-22 01:23
  • 3298
  • 5644
blog.csdn.net

本文学习用Eclipse编译环境把源文件打包成静态库(*.a文件),以及在链接(Link)的过程中使用这个静态库文件。Hightec编译器版本是tricore v4.9.1.0。

文章目录

  • 1 问题引入
  • 2 打包静态库过程
    • 2.1 导入工程
    • 2.2 打包静态库
    • 2.3 相关Makefile文件
  • 3 链接静态库过程
    • 3.1 修改工程
    • 3.2 相关Makefile文件
  • 4 总结

1 问题引入

在平时工作编译软件的时候,通常是把源文件和头文件加入到项目中,然后再点击rebuild编译软件,如下图所示。
在这里插入图片描述
但是,在团队成员之间可能需要经常传输文件,大量的源文件传输十分不方便,而且其他人还需要重新编译一次。另外,涉及到和外部公司交互的时候(例如做好一部分功能的软件交付给其他公司),还有一个保密性问题。

将源文件打包成静态库文件,就可以很好地解决重复编译,以及内容保密封装的问题。

2 打包静态库过程

本章节在博主另一篇文章《Eclipse编译:创建一个AURIX工程》的基础上,将其中一部分源文件打包成静态库文件。

2.1 导入工程

1)打开Eclipse – File --import,然后弹出一个导入界面;
在这里插入图片描述
2)在弹出的Import窗口中,选择General – Existing Projects into Workspace – Next;
在这里插入图片描述
3)选择工程路径 – Finish;
在这里插入图片描述
4)然后就导入了上次创建的工程,左边的Explorer中会显示出源文件和头文件;
在这里插入图片描述

2.2 打包静态库

1)进入到工程文件夹中,把其中两个源文件剪切出来,只保留hello.c/system_tc27x.c和uart_init_poll.c三个文件。后续打包静态库的过程只打包这三个文件。
在这里插入图片描述
2)回到Eclipse中,右键 – refresh(或者F5),然后src文件夹中就只剩三个文件了。
在这里插入图片描述
3)右键工程 – Properties(或者Alt + Enter),打开工程的属性窗口。
在这里插入图片描述
4)点击 C/C++ Build – Settings – Build Artifact,然后将Artifact Type配置为Static Library,将Artifact Name配置为Mylib(自己起个名字),最后OK;
在这里插入图片描述
5)然后Rebuild Project,Eclipse自动打包源文件为静态库。
在这里插入图片描述
等待一会儿以后,下方的console窗口就会提示静态库打包完成。
在这里插入图片描述6)左侧的Explorer中可以看到多了一个名为Archives的分类栏,其中包含一个libMylib.a文件;
在这里插入图片描述
在本地的工程路径下也可以获取这个静态库文件。
在这里插入图片描述

2.3 相关Makefile文件

打包静态库过程的背后也是执行了一部分Makefile文件,但是和编译链接有所不同。本节简单研究一下背后的Makefile文件。

1)点击左侧Explorer中的iRAM – makefile;
在这里插入图片描述
2)从makefile语句可以看出,打包静态库调用了tricore-ar这个工具;
在这里插入图片描述
在HIGHTEC的安装路径中可以找到它。
在这里插入图片描述
所以如果想要对静态库进行更加深入的了解,只需要在帮助手册中查找tricore-ar相关的说明即可。

3)回到makefile中,可以观察到输出libMylib.a文件所依赖的是目标文件,也就是说编译器先把源文件编译成目标文件(*.o),然后再把目标文件打包成静态库。
在这里插入图片描述
目标文件的定义和编译过程在另一个makefile中,subdir.mk文件。其中只有$(OBJS)是包含了内容。
在这里插入图片描述
从subdir.mk文件中可以看到,打包所用的目标文件可以和之前工程中保留的hello.c/system_tc27x.c和uart_init_poll.c三个源文件一一对应。

3 链接静态库过程

第2节中将hello.c/system_tc27x.c和uart_init_poll.c三个源文件打包成了一个libMylib.a静态库文件,本节就通过配置编译器,将这个静态库文件和其他目标文件链接到一起,生成elf文件。

3.1 修改工程

为了便于演示,本节就不再重新创建工程,而是在上一节的基础上修改工程配置。

1)在src文件夹中,把源文件换成之前没有打包的uart_poll.c和usr_sprintf.c两个文件。
在这里插入图片描述
后面会通过配置编译器,将这两个源文件编译为目标文件,再和之前的静态库链接起来。

2)创建一个lib文件夹,把静态库拷贝进去。
在这里插入图片描述
3)打开Eclipse工程,删除掉上一次的编译结果iRAM文件夹。
在这里插入图片描述
4)右键工程 – Properties,打开属性面板;点击 C/C++ Build – Settings – Build Artifact,然后将Artifact Type配置为Executable,将Artifact Name配置为Output,也就是输出的elf文件名称。
在这里插入图片描述
5)在Tool Settings中用命令行把静态库添加进去。另外,用-Wl, --start-group参数可以链接多个交叉静态库。
在这里插入图片描述
6)然后Rebuild Project,Eclipse会自动生成makefile并编译、链接。
在这里插入图片描述
本地的工程文件夹中就生成了这个elf文件。
在这里插入图片描述

3.2 相关Makefile文件

打开Makefile文件,可以看到之前自定义的一段参数写在了其中。
在这里插入图片描述

4 总结

本文学习了通过Eclipse环境打包静态库的方法,以及链接静态库的方法。其中还有许多相关的配置,需要按照工作中的需求来选择。

>>返回个人博客总目录

文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树首页概览127461 人正在系统学习中
注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/113528117"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top