如何使用用“ -Wl,-Map,mapfile”给ld传递参数生成map文件?
时间: 2024-02-17 07:01:25 浏览: 275
要使用“-Wl,-Map,mapfile”选项将参数传递给ld,以便生成map文件,请按照以下步骤操作:
1. 在编译命令行中添加“-Wl,-Map,mapfile”选项,如下所示:
```
gcc -o myprog myprog.c -Wl,-Map,mapfile
```
2. 运行编译命令以生成可执行文件,并在同一目录下生成名为“mapfile”的map文件。
3. 使用任何文本编辑器打开map文件,以查看符号的地址和大小,以及它们在可执行文件中的位置。
请注意,如果您在链接命令行中使用多个选项,则应将它们用逗号分隔。例如,如果您还想使用“-s”选项削减可执行文件的大小,则可以使用以下命令:
```
gcc -o myprog myprog.c -Wl,-Map,mapfile,-s
```
这将生成名为“mapfile”的map文件,并使用“-s”选项削减可执行文件的大小。
相关问题
cat /public2/work/Project/shuidao/01.BWA/bam/mapfile.16 |while read i; do grep -v $i mapfile3 >mapfile16.new;done
这是一个在命令行环境下执行的shell脚本命令,它的作用是将文件mapfile.16中的每一行(以换行符为分隔符)作为参数i传给while循环,然后在mapfile3中找到不包含i的行并将其写入到mapfile16.new中。但是这个命令有一个问题,即每次循环都会重新生成mapfile16.new文件,因此最终的结果只会保留最后一次循环的结果。可能更好的实现方式是将while循环替换为awk命令,以一次性生成mapfile16.new文件。
cat /public2/work/Project/shuidao/01.BWA/bam/mapfile.16 |while read i; do grep -v $i mapfile3 >>mapfile16.new;done
这是一个在命令行环境下执行的shell脚本命令,它的作用是将文件mapfile.16中的每一行(以换行符为分隔符)作为参数i传给while循环,然后在mapfile3中找到不包含i的行并将其追加写入到mapfile16.new中。相较于之前的命令,这个命令使用了追加写入的方式,可以保留每次循环的结果,最终生成的mapfile16.new包含了所有的不包含mapfile.16中行的内容。
阅读全文