符号链接

SO文件包大小优化

谁说我不能喝 提交于 2019-11-28 14:10:44
1、编译参数--ffunction-sections,-fdata-sections,链接参数-Wl,--gc-sections, --ffunction-sections和-fdata-sections会把符号编译成单独的section,--gc-sections在链接的时候会去掉用不到的符号,从而减小包大小 2、-Ox,各个级别的包大小关系:-O3 > -O2 > -Os,我自己做的实验:-O3包是13.5M,改成-O2是12M,改成-Os是9.7M。 来源: CSDN 作者: beyond702 链接: https://blog.csdn.net/beyond702/article/details/90475024

链接常识

老子叫甜甜 提交于 2019-11-28 10:17:39
/*--> */ /*--> */ 链接的过程中,所有未定义的符号都要进行一个重定位的过程,这些未定义的符号要么在其他的普通目标文件中( .o),要么在其他的动态库文件中,无论如何,要想链接成功,未定义的符号所在的文件一定要作为链接的输入。 链接成功完成后的符号,要么在自身模块中,要么在其他的动态库模块中。 来源: https://www.cnblogs.com/yibinpan/p/11404513.html

linux中的read_link

你说的曾经没有我的故事 提交于 2019-11-28 00:22:20
readlink是linux系统中一个常用工具,主要用来找出符号链接 所指向的位置 。 readlink 获取当前进程对应proc/self/exe ]:shell中 readlink /proc/self/exe -f 选项可以递归跟随给出文件名的所有符号链接以标准化,除最后一个外所有组件必须存在。 简单地说,就是一直跟随符号链接,直到直到非符号链接的文件位置,限制是最后必须存在一个非符号链接的文件。 来源: https://www.cnblogs.com/Stephen-Qin/p/11382402.html

linux必学的的60个命令

懵懂的女人 提交于 2019-11-27 08:28:12
linux必学的的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍。 ◆ 安装和登录命令 :login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last; ◆ 文件处理命令 :file、mkdir、grep、dd、find、mv、ls、diff、cat、ln; ◆ 系统管理相关命令 :df、top、free、quota、at、lp、adduser、groupadd、kill、crontab; ◆ 网络操作命令 :ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup; ◆ 系统安全相关命令 :passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who; ◆ 其它命令 :tar

youkong zaikan

前提是你 提交于 2019-11-27 01:07:18
为什么会出现LNK2005 许多Visual C++的使用者都碰到过LNK2005:symbol already defined和LNK1169:one or more multiply defined symbols found这样的链接错误,而且通常是在使用第三方库时遇到的。对于这个问题,有的朋友可能不知其然,而有的朋友可能知其然却不知其所以然,那么本文就试图为大家彻底解开关于它的种种疑惑。 大家都知道,从C/C++源程序到可执行文件要经历两个阶段:(1)编译器将源文件编译成汇编代码,然后由汇编器(assembler)翻译成机器指令(再加上其它相关信息)后输出到一个个目标文件(object file,VC的编译器编译出的目标文件默认的后缀名是.obj)中;(2)链接器(linker)将一个个的目标文件(或许还会有若干程序库)链接在一起生成一个完整的可执行文件。 编译器编译源文件时会把源文件的全局符号(global symbol)分成强(strong)和弱(weak)两类传给汇编器,而随后汇编器则将强弱信息编码并保存在目标文件的符号表中。那么何谓强弱呢?编译器认为函数与初始化了的全局变量都是强符号,而未初始化的全局变量则成了弱符号。比如有这么个源文件: extern int errorno; int buf[2] = {1,2}; int *p; int main() {