当前位置:首页 » 编程软件 » 编译器中动态连接器是哪个

编译器中动态连接器是哪个

发布时间: 2022-05-06 13:33:17

‘壹’ linux 动态链接和静态链接的区别

两者区别:a,静态库的使用需要:1包含一个对应的头文件告知编译器lib文件里面的具体内容2设置lib文件允许编译器去查找已经编译好的二进制代码b,动态库的使用:程序运行时需要加载动态库,对动态库有依赖性,需要手动加入动态库c,依赖性:静态链接表示静态性,在编译链接之后,lib库中需要的资源已经在可执行程序中了,也就是静态存在,没有依赖性了动态,就是实时性,在运行的时候载入需要的资源,那么必须在运行的时候提供需要的动态库,有依赖性,运行时候没有找到库就不能运行了d,区别:简单讲,静态库就是直接将需要的代码连接进可执行程序;动态库就是在需要调用其中的函数时,根据函数映射表找到该函数然后调入堆栈执行。做成静态库可执行文件本身比较大,但不必附带动态库做成动态库可执行文件本身比较小,但需要附带动态库链接静态库,编译的可执行文件比较大,当然可以用strip命令精简一下(如:striplibtest.a),但还是要比链接动态库的可执行文件大。程序运行时间速度稍微快一点。静态库是程序运行的时候已经调入内存,不管有没有调用,都会在内存里头。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。其在编译程序时若链接,程序运行时会在系统指定的路径下搜索,然后导入内存,程序一般执行时间稍微长一点,但编译的可执行文件比较小;动态库是程序运行的时候需要调用的时候才装入内存,不需要的时候是不会装入内存的。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。动态链接库的特点与优势首先让我们来看一下,把库函数推迟到程序运行时期载入的好处:1.可以实现进程之间的资源共享。什么概念呢?就是说,某个程序的在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝了。如果有,则让其共享那一个拷贝;只有没有才链接载入。这样的模式虽然会带来一些“动态链接”额外的开销,却大大的节省了系统的内存资源。C的标准库就是动态链接库,也就是说系统中所有运行的程序共享着同一个C标准库的代码段。2.将一些程序升级变得简单。用户只需要升级动态链接库,而无需重新编译链接其他原有的代码就可以完成整个程序的升级。Windows就是一个很好的例子。3.甚至可以真正坐到链接载入完全由程序员在程序代码中控制。程序员在编写程序的时候,可以明确的指明什么时候或者什么情况下,链接载入哪个动态链接库函数。你可以有一个相当大的软件,但每次运行的时候,由于不同的操作需求,只有一小部分程序被载入内存。所有的函数本着“有需求才调入”的原则,于是大大节省了系统资源。比如现在的软件通常都能打开若干种不同类型的文件,这些读写操作通常都用动态链接库来实现。在一次运行当中,一般只有一种类型的文件将会被打开。所以直到程序知道文件的类型以后再载入相应的读写函数,而不是一开始就将所有的读写函数都载入,然后才发觉在整个程序中根本没有用到它们。静态库:在编译的时候加载生成目标文件,在运行时不用加载库,在运行时对库没有依赖性。动态库:在目标文件运行时加载,手动加载,且对库有依赖性。具体在开发中用到哪种库,我觉得还是根据实际的内存大小,ROM大小,运行的速度等综合考虑。

‘贰’ 请问C++的编译器都有哪些

网上找的,呵呵

1.Borland C++ Compiler 5.5
“Borland C/C++ 5.5.1 for Win32”是Borland公司在2000年免费放出的一个C/C++编译器,其功能完整、包含多种SDK,且容量极小,安装版本大小仅8MB。Borland公司的旗舰级产品“C++ Builder 5”内置的就是这一编译器。

2.Dev-C++ 5.0
是Bloodshed软件公司于2002年9月26日推出的一个基于MingW(即GNU C/C++的Win32版)的微型C/C++开发工具。由于使用了GNU C/C+内核,所以在做软件移植时非常的方便,你可以方便的将一个程序移植到任意一个有GNU C/C++的平台。而且由于基于GNU C/C++的开放源代码软件很多,所以使用Dev-C++是一个很好的选择。但由于它的调试不便,帮助不全等问题,也使得它在推广上举步艰难,远比不上Borland C/C++、OpenWatcom C/C++这两个同是免费的编译器。

3.DJGPP
DJGPP是基于32位保护模式的C语言编译器,是一个GNU软件,换句话说,你可以得到它整个系统的源代码,且可以任意修改。它的集成环境RHIDE是仿Borland C++ 3.1的,十分好用,这比Watcom C要强多了。

4.LCC-Win32
运行于Windows9x/Me/NT/2000下的免费的32位C语言编译系统。它的原始发布文件只有 3M,但却拥有一个功能强大的集成开发环境(IDE)、速度极快的编译器与连接器、方便顺手的调试器、资源编辑器和版本控制系统。另外还提供图像编辑器和 C 语言源文件格式化缩进器等附加工具。通过它的应用程序向导,你可以单击几次鼠标轻松得到一个应用程序框架,丝毫不比其它庞大的同类软件逊色。 你可以用LCC-Win32开发32位的控制台程序、Windows常规程序、动态连接库(DLL) 以及静态连接库(LIB)。LCC编译器支持标准的ANSI C,同时支持 C语言的扩展。通过下载相关工具,LCC-Win32还提供对Eiffel、Fortran语言的支持。

5.OpenWatcom:Watcom系统编译器是加拿大Watcom公司开发的Intel x86体系16/32位编译器,其最新版是11.0c。
Watcom C/C++的集成开发环境极差,不像Borland C/C++和Visual C/C++那样有漂亮的界面,编译连结不过轻轻一点。Watcom C/C++的大部分使用者都在命令行下编译程序。想想吧!一个需要在命令行下编译程序的编译器,怎么匹敌Borland C/C++和Visual C/C++,甚至是C++ Builder呢?

现在我们所用到的OpenWatcom C/C++ 1.0便是Watcom C/C++ 11.0c开放后的版本,它是免费、而且开放源码的。

6.当然还有我们经常看见的TC2.0 TC3.0 Borland C++3.1 等

需要付费的编译器(有些允许有评估期的免费下载):

Borland C++
Comeau C++ - 支持多平台
Compaq C++
Digital Mars C++
Edison Design Group C++ Front End - 被许多C++编译器厂商采用
Green Hills C++ - 支持嵌入式系统平台
HP C++
IBM C++
Intel C++ - 支持Windows, Linux, 和其他嵌入式系统
Interstron C++
Metrowerks C++ - 支持多平台,可从Metrowerks主页上查询
Mentor Graphics/Microtec Research C++ - 支持嵌入式系统平台
Microsoft C++
Paradigm C++ - 支持x86嵌入式系统
The Portland Group C++ - 针对奔腾CPU优化
SGI C++ - 优化的编译器
Sun C++
WindRiver's Diab C++ - 用于很多嵌入式系统

‘叁’ 编译器跟编辑器有什么区别。还有什么是链接器

链接器(Linker)是一个程序,将一个或多个由编译器或汇编器生成的目标文件外加库链接为一个可执行文件。

是软体程序,一般是指用来修改电脑档案的编写软件,但也有人称 PE2、HE4(汉书)……等文书软件为编辑器。常见的编辑器有文本编辑器、网页编辑器、源程序编辑器、图像编辑器,声音编辑器,视频编辑器等。

简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)

‘肆’ 简述一下编译器和链接器的作用

1、编译器:
编译器对源文件进行编译,就是把源文件中的文本形式存在的源代码翻译成机器语言形式的目标文件的过程,在这个过程中,编译器会进行一系列的语法检查。如果编译通过,就会把对应的CPP转换成OBJ文件。
2、链接器:
当链接器进行链接的时候,首先决定各个目标文件在最终可执行文件里的位置。然后访问所有目标文件的地址重定义表,对其中记录的地址进行重定向(加上一个偏移量,即该编译单元在可执行文件上的起始地址)。
然后遍历所有目标文件的未解决符号表,并且在所有的导出符号表里查找匹配的符号,并在未解决符号表中所记录的位置上填写实现地址。最后把所有的目标文件的内容写在各自的位置上,再作一些另的工作,就生成一个可执行文件。

热点内容
视频服务器新建ftp用户 发布:2025-05-14 13:03:09 浏览:224
php花生 发布:2025-05-14 12:54:30 浏览:549
java人才 发布:2025-05-14 12:29:10 浏览:649
如何打开软密码 发布:2025-05-14 12:28:55 浏览:427
七牛存储待遇 发布:2025-05-14 12:27:20 浏览:422
C语言a35a4a5 发布:2025-05-14 11:53:48 浏览:813
android隐藏item 发布:2025-05-14 11:43:56 浏览:328
javawebeclipse编译 发布:2025-05-14 11:35:24 浏览:938
可编程控制器试题 发布:2025-05-14 11:25:32 浏览:122
dsp混合编程 发布:2025-05-14 11:23:10 浏览:251