常见问题!!by xiaokang

dumpbin

  • VCVARS32.bat 文件用于设置环境变量
  • 或者直接从开始菜单中找到运行VS的tools
  • 常用选项:/ALL /DISASM /EXPORTS /DEPENDENTS /HEADERS /IMPORTS
  • 详见收藏夹

C++静态库与动态库

  • 《程序员的自我修养——链接、装载与库》深入底层学习用
  • 静态库(.a、.lib)和动态库(.so、.dll)
  • 静态库使用ar/lib.exe 打包.o文件产生
  • 在Windows系统下的执行文件格式是PE格式,动态库需要一个DllMain函数做出初始化的入口,通常在导出函数的声明时需要有_declspec(dllexport)关键字。

  • Linux下gcc编译的执行文件默认是ELF格式,不需要初始化入口,亦不需要函数做特别的声明,编写比较方便。

  • -fPIC 创建与地址无关的编译程序(pic,position independent code),是为了能够在多个应用程序间共享。

1)        当系统加载可执行代码时候,能够知道其所依赖的库的名字,但是还需要知道绝对路径。此时就需要系统动态载入器(dynamic linker/loader)。
2)        对于elf格式的可执行程序,是由ld-linux.so*来完成的,它先后搜索elf文件的 DT_RPATH段—环境变量LD_LIBRARY_PATH—/etc/ld.so.cache文件列表—/lib/,/usr/lib 目录找到库文件后将其载入内存。
如何让系统能够找到它:
-  如果安装在/lib或者/usr/lib下,那么ld默认能够找到,无需其他操作。
-  如果安装在其他目录,需要将其添加到/etc/ld.so.cache文件中,步骤如下:
--  编辑/etc/ld.so.conf文件,加入库文件所在目录的路径
--  运行ldconfig ,该命令会重建/etc/ld.so.cache文件

#pragma para

  • 设定编译器的状态或者是指示编译器完成一些特定的动作
  • #pragma comment( comment-type [,“commentstring”] )
  • comment-type : compiler,exestr,lib,linker之一
  • #pragma para
  • para 常用参数:message() code_seg() once hdrstop comment
  • 详见:https://www.cnblogs.com/forlina/archive/2011/08/11/2134961.html

__declspec(extended-decl-modifier-seq)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值