gcc -Wl,-M=helloworld.map,--cref

-Wl,option  把选项 option 传递给连接器。如果 option 中含有逗号,就在逗号处分割成多个选项。

-M      告诉预处理器输出一个适合 make 的规则,用于描述各目标文件的依赖关系。对于每个源文件,预处理器输出 一个 make 规则,该规则的目标项(target)是源文件对应的目标文件名,依赖项(dependency)是源文件中 #include 引用的所有文件。生成的规则可以是单行,但如果太长,就用‘\‘换行符续成多行。规则显示在标准输出,不产生预处理过的 C 程序。‘-M‘隐含了‘-E‘选项。

--cref     Cross Reference的简写,输出交叉引用表(cross reference table)。

-E        仅运行 C 预处理器。预处理所有指定的 C 源文件,结果送往标准输出或指定的输出文件。

试验

使用最简单的helloworld.c

#include <stdio.h>

int main()
{
  printf("hello world!\n");
  return 0;
}

编译

gcc helloworld.c -Wl,-M=helloworld.map,--cref -o helloworld

查看helleworld.map文件

参考:

GCC中文手册

时间: 2024-08-09 13:10:13

gcc -Wl,-M=helloworld.map,--cref的相关文章

Linux下gcc编译控制动态库导出函数小结

Linux下gcc编译控制动态库导出函数小结 来源 https://www.cnblogs.com/lidabo/p/5703890.html 根据说明文档“How To Write Shared Libraries"介绍, 有四种方法: 1. 在方法声明定义时,加修饰:__attribute__((visibility("hidden"))) 就是说将不公开的函数都加上这个属性,没加的就是可见的 2. gcc 在链接时设置 -fvisibility=hidden,则不加 v

第5课 嵌入式C语言编译器

1. GCC与gcc (1)GCC:(GNU Compiler Collection) GNU编译器集合,包含众多语言的编译器,如C.C++.Java.D.Objective-C等 (2)gcc:特指GCC中的C语言编译器 (3)GCC与嵌入式:多数嵌入式操作系统都是基于GCC进行源码编译.如Linux.VxWorks.Android等. (4)实际开发中,内核开发一般用gcc,应用开发一般用gcc/g++/gdc 2. 交叉编译 (1)背景 ①嵌入式设备往往资源受限 ②不可能在嵌入式上直接对处

MinGW gcc 生成动态链接库 dll 的一些问题汇总 (补充)

我曾经写过一个小短文,介绍MinGW gcc 生成动态链接库 dll 的一些问题.当时写的并不全面.最近又遇到写新的问题.这里记录一下,做个补充. 通常情况下,dll 中的函数如果采用 _stdcall ,则生成的dll中函数名会被修饰. 比如有如下的函数: //dll.c int  _stdcall add(int a, int b) { return a + b; } 最终 dll 文件中的函数名是 [email protected] 但是有时我们希望函数名不要添加这种修饰,就像 windo

windows下gcc开发c语言环境配置

工具准备:(配置windows) 1.安装qt5 2.在window系统的path路径中增加化境变量: C:\Qt\Qt5.6.2\5.6\mingw49_32\bin C:\Qt\Qt5.6.2\Tools\mingw492_32\bin 3.打开命令窗口,出入gcc –v,可以查看版本信息 4.打开qt生成一个空的项目,编译后程序可以运行,表示qt配置成功. 工具准备:(配置linux) linux自带gcc编译器. Helloworld程序的结构: #include "stdio.h&qu

libevent源码分析:hello-world例子

hello-world是libevent自带的一个例子,这个例子的作用是启动后监听一个端口,对于所有通过这个端口连接上服务器的程序发送一段字符:hello-world,然后关闭连接. 1 /* 2 * gcc -g -o hello-world hello-world.c -levent_core 3 */ 4 #include <sys/socket.h> 5 #include <netinet/in.h> 6 #include <arpa/inet.h> 7 #in

如何指定GCC的默认头文件路径

如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:)原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631=============================================================================== 在交叉编译的时候我们需要用到其他的库,在config时候可以通过“-l”来指定目录,但是每次都需要设置的话难免有些麻烦,找到一个简单的方法.看下文的红色部分. 有大

gcc/交叉编译

1.linux gcc包含的c/c++编译器,gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译. 2.linux gcc的应用:直接编译生成 a.out文件 -o 指定生成文件名字. 3.linux gcc 编译时遇到"undefined reference to 'xxxxx'"的错误,不是编译出错,是连接出错,没有指定链接程序要用到的库.比如数学函数库要 加-lm ,数据库库要加 -lsqlite3,线程函数库要加 -lpthread

整理Linux下gcc编译中关于头文件与库文件搜索路径相关问题

分类: MakeFile/Make/GCC/LD2010-11-20 23:15 535人阅读 评论(0) 收藏 举报 转者的话: 本文详细介绍了gcc 编译时 搜索头文件的路径以及方式, 编译时寻找lib库的方式, 以及运行时加载库的寻找方式!!!非常之经典啊!以后有新的知识都汇总到这里来了! 在交叉编译的时候我们需要用到其他的库,在config时候可以通过“-I”来指定头文件目录,但是每次都需要设置的话难免有些麻烦,找到一个简单的方法. 看下文的红色部分. 有大量的环境变量可供设置以影响 G

gcc指定头文件路径及动态链接库路径

一. #include <>与#include "" #include <>直接到系统指定的某些目录中去找某些头文件.#include ""先到源文件所在文件夹去找,然后再到系统指定的某些目录中去找某些头文件. 二. gcc指定头文件的三种情况: 1.会在默认情况下指定到/usr/include文件夹(更深层次的是一个相对路径,gcc可执行程序的路径是/usr/bin/gcc,那么它在实际工作时指定头文件头径是一种相对路径方法,换算成绝对路径