
编译
文章平均质量分 84
ayu_ag
这个作者很懒,什么都没留下…
展开
-
ld.gold使用指南
一、背景gcc将源码编译为.o,然后linker将.o连接为.so或者可执行程序,一般使用的linker为ld.bfd、ld.gold、lld。ld.bfd在binutils软件包中,一般为默认的连接器;ld.gold也在binutils软件包中,速度比ld.bfd要快一些,但是内核以及其他一些项目不支持;lld是llvm的linker,据说比ld.gold更快,但是没怎么了解过,本文不讨原创 2017-11-16 17:14:09 · 14611 阅读 · 1 评论 -
ELF entry point和装载地址
为了研究ELF文件的装载到内存的哪里,以及从哪里开始运行程序,环境:ubuntu12.04 64位,gcc4.6.3。使用的源代码是:#include void hello(void){ exit(42);}int main(void){ return 24;}程序并不是从main函数开始执行的,gcc -o main main.c时,默原创 2016-02-25 14:00:19 · 12160 阅读 · 0 评论 -
如何查找android emulator内核的精确版本
android api22, arm imagesroot@generic:/ # cat /proc/versionLinux version 3.4.67-01422-gd3ffcc7-dirty (digit@tyrion.par.corp.google.com) (gcc version 4.8 (GCC) ) #1 PREEMPT Tue Sep 16 19:34:06 CEST原创 2016-06-23 11:14:08 · 2831 阅读 · 0 评论 -
编译开源软件时,prefix, sysroot, DESTDIR怎么整
开发环境ubuntu12.04,x86_64,gcc4.6arm板子环境armeabi,32bit,gcc5.3以shell里面经常用到的file程序为例子从ftp://ftp.astron.com/pub/file/上面下载源代码,因为我的ubuntu使用的是file5.09,不支持编译最新版本的file.5.25,所以我就下载file5.09了。原创 2016-03-04 14:15:02 · 7782 阅读 · 1 评论 -
静态库改为动态库后,可以影响到程序的执行结果
源于systemd的例子先看bus-error.h中的一个宏:#define BUS_ERROR_MAP_ELF_REGISTER \ __attribute__ ((__section__("BUS_ERROR_MAP"))) \ __att原创 2016-06-20 20:31:36 · 1253 阅读 · 0 评论 -
ELF函数重定位问题
一、背景gcc将代码编译为.o,ld将.o连接为.so或者可执行程序,可执行程序在使用PIC方式的.so时,都会遇到函数重定位的问题,本文对该问题进行分析。二、静态连接代码示例:x.c:#include void foo(){ printf("foo\n");}main.c:extern void foo(void);int main(void){原创 2017-11-28 17:46:26 · 5331 阅读 · 0 评论