基于Ubuntu的嵌入式开发练习(三)gcc的进一步理解以及借助第三方库函数进行程序设计

如有错误,欢迎指正,谢谢!

一、可执行文件的组装

1、下静态库.a 与.so 库文件的生成与使用

①、设置目录并用文本编辑器生成相关文件
根据参考博客1,建立目录以及生成相关文件
在这里插入图片描述
②、生成目标文件
通过命令: gcc -c A1.c A2.c,生成我们需要的.o文件
在这里插入图片描述
③、生成静态库.a文件
通过命令:ar crv libafile.a A1.o A2.o实现
在这里插入图片描述
④、使用.a库文件,创建可执行程序
使用命令:gcc -o test test.c libafile.a实现,得到了我们需要的test.exe文件
在这里插入图片描述
执行test.exe文件

2、共享库.so文件的生成与使用

①、生成目标文件
通过命令:gcc -c -fpic A1.c A2.c生成目标文件
注:此处生成.o文件必须添加"-fpic"(小模式,代码少),否则在生成.so文件时会出错
在这里插入图片描述②、生成共享库.so文件
通过命令: gcc -shared *.o -o libsofile.so 实现
在这里插入图片描述

③、使用.so库文件,创建可执行程序
通过命令:gcc -o test test.c libsofile.so 实现
执行test.exe文件
在这里插入图片描述问题的提出及解决:
./test: error while loading shared libraries: libsofile.so: cannot open shared object file: No such file or directory
这是由于linux自身系统设定的相应的设置的原因,即其只在/lib and /usr/lib下搜索对应的.so文件,故需将对应so文件拷贝到对应路径。
先执行sudo cp libsofile.so /usr/lib
再次执行./test,即可成功运行。

3、个人练习

①、实验要求
第一次练习的程序代码基础进行改编,除了x2x函数之外,再扩展写一个x2y函数(功能自定),main函数代码将调用x2x和x2y ;将这3个函数分别写成单独的3个 .c文件,并用gcc分别编译为3个.o 目标文件;将x2x、x2y目标文件用 ar工具生成1个 .a 静态库文件, 然后用 gcc将 main函数的目标文件与此静态库文件进行链接,生成最终的可执行程序,记录文件的大小。再将x2x、x2y目标文件用 ar工具生成1个 .so 动态库文件, 然后用 gcc将 main函数的目标文件与此动态库文件进行链接,生成最终的可执行程序,记录文件的大小,并与之前做对比。
②、进行实验
编写相关的代码
x2x请参考 基于Ubuntu的嵌入式开发练习(一)初试Makefile、gcc.
x2y.c

float x2y(int a,int b)
{
   
	float sum;
	sum=a*b+a-b;
	return sum;
}

A.h

#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值