导航:首页 > 源码编译 > 静态编译叫什么名字

静态编译叫什么名字

发布时间:2022-12-12 12:33:29

① 如何编译C/Fortran动态/静态链接库

首先,传统的编译,也就是静态编译是把 源文件 翻译成目标文件,这个是一次性过程,也就是你所谓的静态编译。
后来的Java和.NET等语言,首先编译成中间形式,然后运行过程中根据需要编译成本地代码(注意这个过程不是一次性的,下次运行重新编译),这个就是JIT(即时编译)技术,从即时编译发展出了动态编译技术
————————————
(传统的)编译完成后,像C/C++、Fortran、汇编等语言,可以把多个目标文件合并到一个库文件中,这个就是静态库。比如常说的库函数printf就是libc里面的函数。
如果有了启动函数(main),main里面使用了printf,就可以通过静态链接技术,从libc中提取出printf所在的文件加入到可执行文件中,如果printf还需要其它函数,就继续搜索并加入列表,直到形成一个闭包。这个就是静态链接。
可是静态链接有个明显的缺点,如果每个程序都需要printf,那么printf这个函数的代码就会同时存在在每个程序中,这样也太占地方了吧。所以发明了动态连接技术,其实有两种形式。无论哪一种,都是首先记录下需要调用printf这个函数以及所在的动态库,等到运行的时候再加载动态库,从动态库中找到真正的printf去执行。
由于,动态链接技术需要一些额外的信息,传统的静态库是不具备的,这些额外信息主要是重复加载和卸载时所需要的一些代码,因此需要动态链接库。

② int ival = 1024; 编译器静态编译时,分配一块内存,有地址,有名字ival,有值1024.他们都存在哪

这个要看情况的,
看你的这个变量定义在什么地方,
如果是全局的那么在BSS静态段
如果是函数内的,那么在堆栈上.
这个名字ival对于编译出来的代码没有意义,
最后只是存放在我上面说的地方而已.
编译器使用的是1024这个值直接进行运算的.
在某些情况下,编译器也可能 会把这个变量直接存放到寄存器当中作为优化.
和程序的上下文有关.

③ 易语言静态编译和独立编译有什么区别

静态编译是指编译后的exe文件(可执行文件)包含了所有支持库文件,只有单独一个exe文件。

独立编译在编译后也只有单独一个exe文件,不过会在运行后立即释放支持库到Windows的临时文件夹的子目录中。


可能的Windows临时文件存放目录:

%USERPROFILE%AppData

%USERPROFILE%AppDataLocalTemp

上文的“ %UESRPROFILE% ”是指用户目录。输入到电脑文件(文件资源管理器)的地址栏中可以直接打开,资料来源点此。

linux怎么静态编译

关于在 Linux 环境下面对 C 语言源程序进行静态编译,关键是要看你的 C 语言源程序中都使用到了哪些系统库函数?如果是标准的输入、输出库函数,只要在命令行提示符 $ 下面执行:
gcc my_prog.c 即可(缺省的可执行文件名是:a.out);如果在用户的源程序中使用到了数学计算函数,那么在命令行提示符 $ 下面必须执行:
gcc my_prog.c -IMATH.LIB(假设涉及到各种数学计算的数学库的库文件为:MATH.LIB)
如果不加上 -IMATH.LIB 选项,那么即使你的源程序编写得再正确,也无法正常编译。
另外还有一个必须要注意的就是:在 Linux 的环境变量中,一定要把 INCLUDE、LIB 所在的路径设置好(在 SHELL 文件中写好),这样在使用 Linux 系统时才能够减少出错的机会。

⑤ 静态编译和动态编译有何不同

静态编译就是把库函数编译到你的程序里 这样编译的好处是 可以适应不同的平台 如果你是用window系统的话不建议用静态编译 因为这样会使你的代码量增大
动态编译就是不把库函数编译到你的程序里

⑥ 静态联编和静态编译

联编就是将模块或者函数合并在一起生成可执行代码的处理过程,同时对每个模块或者函数调用分配内存地址,并且对外部访问也分配正确的内存地址,它是计算机程序彼此关联的过程。按照联编所进行的阶段不同,可分为两种不同的联编方法:静态联编和动态联编。

静态联编是指在编译阶段就将函数实现和函数调用关联起来,因此静态联编也叫早绑定,在编译阶段就必须了解所有的函数或模块执行所需要检测的信息,它对函数的选择是基于指向对象的指针(或者引用)的类型,C语言中,所有的联编都是静态联编,据我所知道的,任何一种编译器都支持静态联编(废话)。

动态联编是指在程序执行的时候才将函数实现和函数调用关联,因此也叫运行时绑定或者晚绑定,动态联编对函数的选择不是基于指针或者引用,而是基于对象类型,不同的对象类型将做出不同的编译结果。C++中一般情况下联编也是静态联编,但是一旦涉及到多态和虚拟函数就必须要使用动态联编了。下面将介绍一下多态。

多态:字面的含义是具有多种形式或形态。C++多态有两种形式,动态多态和静态多态;动态多态是指一般的多态,是通过类继承和虚函数机制实现的多态;静态多态是通过模板来实现,因为这种多态实在编译时而非运行时,所以称为静态多态。

什么是静态编译
静态编译,就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。
编辑本段静态编译与动态编译的区别
动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。
静态编译就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。所以其优缺点与动态编译的可执行文件正好互补。

⑦ 易语言要推出的静态编译是什么意思

2、对于“静态编译”,是指在编译时,把支持库中被程序使用的有效代码按实际需要链接到EXE中,未被用到的则不链接。以后将不存在“即使仅仅使用一条命令也必须多带一个1M多的支持库文件”的现象。

应该是缩小文件的大小吧。

⑧ c语言有静态编译吗

你说的是库吧,不是头文件,头文件没关系,
如果要静态编译,使用gcc的话,只要加上-static选项就行了

⑨ 易语言的静态编译是什么意思

1、编译是把支持库文件和程序分开来,如果给别人去用,别人却没安装易语言,就要把支持库文件带上给那人才能用.
2、静态编译就是把支持库文件打包到程序里去.这样,如果对方没装易语言也照样可以正常使用和独立编译.
3、在易语言中,想把一个易语言源码程序变成一个可执行的EXE软件程序,有三种编译方式:
一、编译。
这种方式只是把源码变成EXE文件,不把所用到的支持库一起打包进程序中。
优点是程序体积小,可以有效地减少某些杀毒软件的误报;
缺点是只可以在装有易语言的机器上使用,在没有易语言的电脑上会说缺少支持库。
二、独立编译。
在易语言4.X版中,可以把支持库写到EXE程序中,方便在没有易语言的电脑上使用。
缺点是程序体积大,容易误报。在易语言5.X版中,独立编译改为静态编译,不再把支持库整个地打包到程序中,而把用到的命令打包,所以体积有所减小,也减少了误报。
但是静态编译需要使用外部的链接器,如果设置不好,则无法编译。
三、编译成安装文件。
这种方式的编译,可以直接生成安装文件,方便在其他电脑中进行软件的安装。
缺点是不小心就会把源码也打包进去。

⑩ 易语言编译和静态编译的区别

1、库文件和程序文件不同,编译是把支持库文件和程序分开来,如果给别人去用,别人却没安装易语言,就要把支持库文件带上给那人才能用。但是静态编译是把支持库文件打包到程序里去.这样,如果对方没装易语言也照样可以正常使用和独立编译。

阅读全文

与静态编译叫什么名字相关的资料

热点内容
大连php培训学校 浏览:985
怎么指定定向流量app的免流 浏览:900
华为云服务器有啥软件 浏览:654
礼记正义pdf 浏览:988
CorePDF 浏览:733
python多文件调用 浏览:329
linux如何用python 浏览:188
超易学的python 浏览:159
控制面板命令行 浏览:51
为什么空气难压缩是因为斥力吗 浏览:643
郭天祥单片机实验板 浏览:601
服务器有什么危害 浏览:258
饥荒怎么开新的独立服务器 浏览:753
文件夹变成了 浏览:560
linuxpython绿色版 浏览:431
怎么下载小爱同学音箱app 浏览:554
python占位符作用 浏览:76
javajdbcpdf 浏览:543
php网页模板下载 浏览:192
python试讲课pygame 浏览:409