编译c/c++完整工具链

  • 编译器,常见有gcc clang等
  • GNU Binutils,链接器ld等一些工具
  • 标准库实现,linux上常常是glibc

编译器

常见的有gcc,clang,g++,clang++

Binutils

除了编译之外,还有链接汇编,不过通常情况下调用gcc或者clang这些工作就默认被执行了
Gnu Binutils是gnu提供的一组工具合集,llvm同样提供了类似功能的工具

GNU Binutils

https://www.gnu.org/software/binutils/
一个二进制工具的集合。主要有:
ld - GNU链接器。
as - GNU汇编程序。
gold - 一个新的,更快的,ELF专用链接器。

它们还包括:
addr2line - 将地址转换为文件名和行号。
ar - 用于创建、修改和从档案中提取的实用程序。
c++ Filter - 过滤要求编码的c++符号。
dlltool - 创建用于构建和使用dll的文件。
elfedit - 允许修改ELF格式文件。
gprof - 显示概要信息。
gprofng - 收集和显示应用程序性能数据。
nlmconv - 将目标代码转换为NLM。
nm - 列出目标文件中的符号。
objcopy - 复制和翻译目标文件。
objdump - 显示来自目标文件的信息。
ranlib - 生成归档文件内容的索引。
readelf - 显示来自任何ELF格式目标文件的信息。
size - 列出对象或归档文件的部分大小。
strings - 列出文件中的可打印字符串。
strip - 丢弃符号。
windmc - 一个Windows兼容的消息编译器。
windres - 用于Windows资源文件的编译器。

llvm Binutils

https://www.llvm.org/docs/CommandGuide/index.html

llvm-addr2line - a drop-in replacement for addr2line
llvm-ar - LLVM archiver
llvm-cxxfilt - LLVM symbol name demangler
llvm-install-name-tool - LLVM tool for manipulating install-names and rpaths
llvm-nm - list LLVM bitcode and object file’s symbol table
llvm-objcopy - object copying and editing tool
llvm-objdump - LLVM’s object file dumper
llvm-ranlib - generates an archive index
llvm-readelf - GNU-style LLVM Object Reader
llvm-size - print size information
llvm-strings - print strings
llvm-strip - object stripping tool

标准库实现

常见的C标准库实现有:glibc libc uClibc Newlib MicroLIB等等,可以在linux上执行man libc查看介绍
常见的C++标准库有:libstdc++ libc++

posted @ 2023-03-28 17:08  feipeng8848  阅读(280)  评论(0编辑  收藏  举报