笔记整理—内核!启动!—kernel部分(8)动态编译链接库与BSP文件

news/2024/9/19 4:43:11 标签: 笔记, linux, 嵌入式硬件, arm

        linux的C语言程序是用编译的,但是如果要在开发板上运行的话就不能使用默认的ubuntu提供的gcc编译器,而是使用arm-linux版本的一类的编译器。我们可以用file xx去查看一个程序的架构。

arm架构)

(intel的80386架构) 

        对一个程序使用静态编译链接的方法,在编译时添加-static编译项,如:arm-linux-gcc hello.c -O hello -static。如果没有后面的这个-static的话就是动态的编译链接。静态链接的程序是将程序使用到的一些库直接编译到程序里面,所以编译的程序将会比动态链接库的大很多。动态编译的程序将会在运行的时候去找使用的动态链接库。

        一个移植的程序检查会遇到这样的情况 -sh:/xxx:not found。那就找到相应的动态链接库xxx.so放到对应的/lib中去。

        对于arm开发板而言,就把对于开发板交叉编译工具链的/bibc /lib下的东西移植到开发板中去,使用-rdf实现带符号链接的给复制到开发板中去。

        动态链接库的so中包括了调试符号的信息,运行时无用没啥用可以在移植时将这些符号去除, arm-linux-strip *so*能少一些占用空间。(-strip是交叉编译工具链的其中一个工具)

       如何实现开机自启动。可以在rcs中添加某个程序的路径,同理如果想要一个散装的驱动在开机时被装载也可以在rcs中实现。

        buildroot与BSP:BSP文件一般是由芯片厂商或者板卡厂商提供的,buildroot是用于构建根文件系统目录的文件夹,tools为应用层工具,mk文件是一个脚本,用于编译整个BSP文件,./mk -h可见help帮助 --help亦可。

        buildroot就是为了方便制作rootfs和移植交叉编译工具链的,busybox可以在buildroot中找到,将许多的东西进行集成,可以使用make xxx_defconfig与make menuconfig进行使用的配置。

        这章很短,就先这样吧,下一章将会开启一个新的章程,关于linux的应用编程和网络编程。


http://www.niftyadmin.cn/n/5664981.html

相关文章

Fiddler抓包工具实战

文章目录 🟢 Fiddler入门到精通👉主要功能👉使用场景 🟢 一、Fiddler抓包和F12抓包对比🟢 二、Fiddler的核心功能🟢 三、Fiddler的工作原理🟢 四、Fiddler功能配置使用👉规则设置&am…

FastAPI--如何自定义Docs UI,包括多个APP、静态资源、元数据等

如何mount 一个FastAPI Application? “Mounting” means adding a completely “independent” application in a specific path, that then takes care of handling everything under that path, with the path operations declared in that sub-application. 示例代码 主…

「已解决」KeyError: ‘getpwuid(): uid not found: 1004‘

#问题描述 docker中,调用pwd.getpwuid()出现报错: Traceback (most recent call last):...File "/root/miniconda3/envs/octo/lib/python3.10/site-packages/etils/epath/backend.py", line 235, in statowner pwd.getpwuid(st.st_uid).pw_n…

在 Java 中,super关键字和this关键字的区别

在 Java 中,super关键字和this关键字的区别如下: 一、指代对象不同 this: 代表当前对象的引用。即正在调用成员方法或构造方法的那个对象实例。例如,在一个类的方法中,this可以用来引用当前对象的成员变量和方法。 su…

Day99 代码随想录打卡|动态规划篇--- 01背包问题

题目(卡玛网T46): 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等&am…

springboot实训学习笔记(5)(用户登录接口的主逻辑)

接着上篇博客学习。上篇博客是已经基本完成用户模块的注册接口的开发以及注册时的参数合法性校验。具体往回看了解的链接如下。 springboot实训学习笔记(4)(Spring Validation参数校验框架、全局异常处理器)-CSDN博客文章浏览阅读576次,点赞7…

vscode搭建ros开发环境问题记录(更新...)

文章目录 vscode 不能自动补全方法一:方法二: 开发环境: vmware 15.7 ubuntu 20.04 ros noetic vscode 不能自动补全 方法一: 这里将头文件已经正确包含到c_cpp_properties.json中代码中仍然不能自动补全, 将C_CPP插…

C++——求3个数中最大的数(分别考虑整数、双精度数、长整数数的情况),用函数重载方法。

没注释的源代码 #include <iostream> using namespace std; int max(int a,int b,int c); double max(double a,double b,double c); long max(long a,long b,long c); int main() { int a,b,c; double x,y,z; long m,n,p; cout<<"请输入三…