导航:首页 > 源码编译 > 静态编译程序能够在开发板运行吗

静态编译程序能够在开发板运行吗

发布时间:2024-01-25 23:59:41

A. 如何编译程序在开发板上面运行

用户程序insmod 核心模块加载:具体如下:

核心模块编译完成后,基本上是个未经符号定位的目标文件(object)(当然,如果这个object又是一些子object经过ld -r生成的话,则子object之间的符号定位是已经完成的),object是一种可重定位的代码,它可以加载到不同位置的内存执行。而真正加载进核心,并成为核心的一部分,则是用户程序insmod和核心几个系统调用共同完成的。在此过程中,insmod主要完成或通过系统调用完成以下的工作:
1)由参数找到模块文件,如insmod foo.o,模块文件就是foo.o,根据模块文件计算出模块文件所需的内存大小
2)调用系统调用create_mole,为该模块分配核心空间内存
3)调用系统调用query_mole,得到核心提供的符号表,与系统调用create_mole的返回值(核心模块首地址)加在一起对模块进行重定位。
4)在用户空间为核心模块分配内存,并往该段内存复制一个经过定位的object映象。
5)调用系统调用init_mole,将用户内存中的模块映象到相应的核心空间(首地址为create_mole的返回值)。
6)释放用户内存,中止insmod运行。
如果一切顺利,没有出现未定位的符号,则核心模块object就融入系统,成为系统的一部分了。
核心模块的加载过程对核心来说实际是个“静态链接”的过程,这和用户程序动态链接运行过程再链接需要的代码还是不太一样的,当然,object的可重定位特性保证了链接后的代码正常运行,这点倒是比较相似的。
以上回答你满意么?

B. 静态编译是不是在本地不需联网就能运行

是的,一般编译都可以本地运行的,除了一些要调用互联网的插件的程序

C. Qt 如何编译成可执行程序,像VC的静态编译,可以在脱离QT的环境中运行

qt 开源版本 不允许静态编译
可以将DLL打包,就能再其他的机器上运行了.

D. arm-linux-gcc 编译后,在开发板上没法运行

你是不是说反了?或者是说你的环境变量已经有arm-linux-gcc了,而你又用了另一个交叉编译版本,所以导致不能运行?

阅读全文

与静态编译程序能够在开发板运行吗相关的资料

热点内容
君威压缩机电磁阀 浏览:945
安卓6手机为什么不能用app 浏览:860
什么java编译器支持中文 浏览:563
香港服务器如何做代理 浏览:201
pdf写入 浏览:986
高尔夫电台怎么添加到文件夹 浏览:239
四川麻将一般下哪个app 浏览:864
反编译exe脚本 浏览:462
源码文件夹怎么编译到固件中 浏览:912
ERp打印服务器错误怎么弄 浏览:113
蚌端口u盘加密软件有哪些 浏览:180
前端如何认证服务器 浏览:556
linux切换db2用户命令 浏览:308
相片如何用电解压 浏览:908
硕士程序员去学校当老师 浏览:122
pythonstr提取到字典 浏览:820
程序员那么可爱有人看上陆漓了 浏览:878
php正则提取图片 浏览:105
pythonlinuxdjango 浏览:565
php中文返回乱码 浏览:91