
编译
文章平均质量分 56
hbcbgcx
这个作者很懒,什么都没留下…
展开
-
C调用C++库和C++调用C库的方法
C++调用C的函数比较简单,直接使用extern “C” {}告诉编译器用C的规则去调用C函数就可以了。CAdd.hint cadd(int x, int y);CAdd.c#include "CAdd.h"#include <stdio.h>int cadd(int x, int y) { printf("from C function.\n"); ...转载 2019-07-04 14:27:47 · 349 阅读 · 0 评论 -
PIC和PIE
https://www.cnblogs.com/sword03/p/9385660.html1概念•ELF。Exucutable and Linkable Format,译为“可执行和可链接的格式”。它是关于可执行文件、对象代码、共享库和内核导出的一种公共标准文件的格式定义,广泛应用于类unix系统。每个ELF文件由三个部分组成:Program header table、Sectoin he...转载 2019-07-01 16:06:52 · 710 阅读 · 0 评论 -
GCC中的pie和fpie选项
https://blog.youkuaiyun.com/ivan240/article/details/5363395GCC中的pie和fpie选项Position-Independent-Executable是Binutils,glibc和gcc的一个功能,能用来创建介于共享库和通常可执行代码之间的代码–能像共享库一样可重分配地址的程序,这种程序必须连接到Scrt1.o。标准的可执行程序需要固定的地址,...转载 2019-07-01 16:06:13 · 7364 阅读 · 0 评论 -
学习笔记:编译内核scripts/extract-cert.c:21:25: fatal error: openssl/bio.h: No such file or directory
编译内核命令make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-出现fatal error: openssl/名单.h: No such file or directory。原因是libssl-dev~没有安装libssl-dev包含libraries, header files and manpages,是openssl的一部分使用sud...转载 2019-06-14 12:01:16 · 1628 阅读 · 0 评论 -
如何使用gcc跟踪函数调用
http://blog.sina.com.cn/s/blog_a0aacb430101ptwk.html1. gcc在编译时提供了对函数进入及返回时刻进行hook的选项:gcc -finstrument-functions -c file.c使用该选项后,gcc会在编译过程中对函数入口及退出的地方插入函数:void func(){ __cyg_profile_func_ente...转载 2019-06-14 11:51:25 · 1116 阅读 · 0 评论 -
gcc函数追踪功能
https://blog.youkuaiyun.com/muclenerd/article/details/48004213调试代码时有时会需要追中某个功能的执行流程,我们可以通过在函数的入口出口处打印消息来实现。有两种方法可以实现在函数的入口出口放置打印消息来实现函数追踪。1.用手写的宏放置在每个函数入口出口处#define FUNC_ENTRY DEBUG_LOG("func entry")#d...转载 2019-06-14 11:51:16 · 581 阅读 · 0 评论 -
gcc -finstrument-functions 追踪函数调用,获取程序的执行流程
https://blog.youkuaiyun.com/u014608280/article/details/82669330我们在阅读源码的时候经常会碰到很多回调函数,而单步调试又比较麻烦,所以我们可以用gcc 的-finstrument-functions 选项打印函数调用栈。如果我们在编译、链接的时候在gcc加上-finstrument-functions,gcc会自动在函数的入口调用 __cyg_...转载 2019-06-14 11:51:04 · 478 阅读 · 0 评论 -
linux 目标文件(*.o) bss,data,text,rodata,堆,栈
https://blog.youkuaiyun.com/sunny04/article/details/40627311linux目标文件一个简单的程序被编译成目标文件后的结构如下:从图可以看出,已初始化的全局变量和局部静态变量保存在 .data段中,未初始化的全局变量和未初始化的局部静态变量保存在 .bss段中。目标文件各个段在文件中的布局如下:各个段介绍:init段:程序初始化入口代码,...转载 2019-01-23 18:04:22 · 200 阅读 · 0 评论