一些与编译相关的概念

21 篇文章 0 订阅

1 在Windows上运行程序调用库,需要的是,1 指定头文件,并指定库文件名和路径,如果相关的变量在环境变量中就不需要指定,否则需要指定
2 在嵌入式linux上,如果说这个海思板支持某个功能,那么需要做的是a加载驱动,b 指定头文件和so库文件的路径,头文件一般要自己放进去,库文件要看系统库里面有没有,如果没有就要放在相应的路径并指定路径

  • MinGW
    是minimalist gnu for Windows的缩写。是一个可以自由使用和发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台下
    生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。简单点说,就是一个交叉编译平台,能够在linux下使用GNU生成Windows程序,也能够在Windows下使用GNU生成
    windows程序

    其主要特点是使用GNU工具集,因此也可以使用GNU在Windows上搭建GNU环境,来模拟linux环境(包括相关的命令,如ls,cd等)

    在Windows下使用GNU环境开发Windows程序:
    开源不乏神人,于是有了MinGW(Minimalist GNU for Windows),又称mingw32,是将GCC编译器和GNU Binutils移植到Win32平台下,包含一系列头文件、库和可执行文件。
    另有mingw64,可产生64位Windows可执行文件的GNU交叉编译器。然后很多开发者不习惯Windows下的开发环境,还是坚持Linux,就有了Linux平台的交叉编译器,MinGW-w64

    在linux下开发Windows程序:详细见网址:
    http://blog.csdn.net/xww810319/article/details/17223653

  • 常见的C库
    glibc 和 libc 都是 Linux 下的 C 函数库,也可以叫GNUC函数库,一般的代码里面有个宏定义:GNUC,应该指的就是如果有该库存在。
    libc 是 Linux 下的 ANSI C 函数库;glibc 是 Linux 下的 GUN C 函数库。
    ANSI C 函数库是基本的 C 语言函数库,包含了 C 语言最基本的库函数。这个库可以根据头文件划分为 15 个部分,其中包括

由于 Linux 是用 C 语言写的,所以 Linux 的一些操作是用 C 语言实现的,因此,GUN 组织开发了一个 C 语言的库 以便让我们更好的利用 C 语言开发基于 Linux 操作系统的程序。不过现在的不同的 Linux 的发行版本对这两个函数库有不同的处理方法,有的可能已经集成在同一个库里了。
glibc是linux下面c标准库的实现,即GNU C Library。

  • uClibc
    在计算术语中,uClibc 是一个面向嵌入式Linux系统的小型的C标准库。最初uClibc是为了支持uClinux而开发,这是一个不需要内存管理单元的Linux版本,因此适合于微控制器系统(uCs;此处”u”是代表”micro”的μ的罗马化)。

libstdc++.so是嵌入式下面的c++库

libgcc_s.so,包括上面的libstdc++.so是与编译器紧密相关的运行库,gcc命令能够将其关联起来,完成预处理和编译的任务

  • binutils
    GNU Binary Utilities或binutils是一整套的编程语言工具程序,用来处理许多格式的目标文件。当前的版本原本由在Cygnus Solutions的程序员以Binary File Descriptor library(libbfd)所撰写。这个工具程序通常搭配GCC、make、和GDB这些程序来使用。

刚开始时,这个包内只有几支程序,但后来,由于功能需求近似,陆续加入了GNU汇编器(GAS)和GNU连接器(GLD)。一般来说,这些程序都很简单,大部分的复杂性都存在于Binary File Descriptor library和libopcodes这些库里头

其提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(as)、连接(ld)、静态库归档(ar)、反汇编 (objdump)、elf结构分析工具(readelf)、无效调试信息和符号的工具(strip)等。通常,binutils与gcc是紧密相集成 的,没有binutils的话,gcc是不能正常工作的。

binutils包含底下这些指令:

as 汇编器
ld 连接器
gprof 性能分析工具程序
addr2line 从目标文件的虚拟地址获取文件的行号或符号
ar 可以对静态库做创建、修改和取出的操作。
c++filt 解码 C++ 的符号
dlltool 创建Windows 动态库
gold 另一种连接器
nlmconv 可以转换成NetWare Loadable Module目标文件格式
nm 显示目标文件内的符号
objcopy 复制目标文件,过程中可以修改
objdump 显示目标文件的相关信息,亦可反汇编
ranlib 产生静态库的索引
readelf 显示ELF文件的内容
size 列出总体和section的大小
strings 列出任何二进制档内的可显示字符串
strip 从目标文件中移除符号
windmc 产生Windows消息资源
windres Windows 资源档编译器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值