《CSAPP》链接:处理目标文件的工具

5 篇文章 0 订阅

粗略看完了第七章:链接。

 

回想起, 去年安装tokyocabinet后。

gcc -I/usr/local/include tc_example.c -o tc_example /
>   -L/usr/local/lib -ltokyocabinet -lz -lbz2 -lrt -lpthread -lm -lc

gcc编译tc_example.c成功后, 通过./tc_example运行,出现以下错误:

./tc_example: error while loading shared libraries: libtokyocabinet.so.8: cannot open shared object file: No such file or directory

湛哥教我配ld、ldd,配置完成后。./tc_example能正确调用libtokyocabinet的共享目标(动态链接库), 运行正常。

 

gcc/g++在执行编译工作的时候,总共需要4步 参见:http://www.linuxsky.org/doc/dev/200905/362.html

-S 只激活预处理和编译,就是指把文件编译成为汇编代码

-c 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件

-v选项的输出内容, gcc swap.c main.c -o main -v
包含了执行编译的整个过程, --Source--> Pre processor(cpp) --Modifyed Source--> Compiler(cc1) --Assermbly--> Assembler(as) --Relocatable object--> Linker(ld) --Executable object--> 




 

标记一下, 所以直接引用csapp书中内容了:

Tools for Manipulating Object Files

 

There are a number of tools available on Unix systems to help you understand and manipulate object files.

In particular, the GNU binutils package is especially helpful and runs on every Unix platform.
AR: Creates static libraries, and inserts, deletes, lists, and extracts members.
STRINGS: Lists all of the printable strings contained in an object file.
STRIP: Deletes symbol table information from an object file.
NM: Lists the symbols defined in the symbol table of an object file.
SIZE: Lists the names and sizes of the sections in an object file.
READELF: Displays the complete structure of an object file, including all of the information encoded in the
ELF header. Subsumes the functionality of SIZE and NM.
OBJDUMP: The mother of all binary tools. Can display all of the information in an object file. Its most
useful function is disassembling the binary instructions in the .text section.
Unix systems also provide the ldd program for manipulating shared libraries:
LDD: Lists the shared libraries that an executable needs at run time.

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值