
编译
文章平均质量分 84
mw_nice
这个作者很懒,什么都没留下…
展开
-
makefile的链接顺序-c/c++的静态库链接顺序
1.你有一个library或者是可执行文件,你可以这样查看他的依赖关系:readelf -d <> ldd工具2.查看某个. c文件引用了那些头文件 gcc -M :查看引用的全部头文件(包括系统头文件)gcc -MM :忽略系统头文件3.对于library的查找查找需要连接的符号名是从前向后找---即最后一个-l库文件最先调用;根据-L指定的路径顺序查找;不同 目录下的同名的库,只取第一个(从左向右:即依次调用,最后一个生效的是最后调用:即最左...原创 2021-06-10 21:25:03 · 2021 阅读 · 1 评论 -
linux下so动态库调用主程序函数
linux下动态库今天无意间发现在linux下share object(dynamic library)中的函数竟然可以不通过回调的方式直接访问主程序中的函数,瞬间颠覆以前对于动态库的观念.1、如代码所示libhi.so中有一个函数hello, 主程序main中有一个函数hi_out, 那么在main中调用libhi.so中的hello时,hello会自动找到main程序中的hi_output函数地址, 然后进行调用.=================hi.c 编译为 libhi.so=...原创 2020-08-27 10:06:46 · 4506 阅读 · 1 评论 -
在应用程序中替换Linux中Glibc的malloc内存申请的6种方法
打算优化系统的内存分配,接管glibc提供的内存管理,但是整个工程的代码量很大,使用malloc、realloc、calloc和free的地方到处都是,如果自己写好的接口需要重命名所有的调用,先不说工作量,部分没有权限查看代码的.a文件就搞不定了。所以需要替换掉系统的malloc,保证原有调用的名称不变。经过尝试,共有四种方法可以替换,各有优缺点吧。方案1 使用环境变量LD_PRELOAD...原创 2018-12-10 15:04:03 · 2727 阅读 · 1 评论 -
CentOS 6 编译安装gcc 5.0+
CentOS6.5默认安装的gcc版本是4.4.7,而处于某些软件的编译需求,gcc版本要求在5.0以上,因此只能DIY了。1. 环境准备我自己本地配了个CentOS6.5的虚机,配置好yum源(方法参考:https://www.jianshu.com/p/422813bdd34c)。编译gcc之前,首先需要环境中已经安装一套gcc和g++yum install gccyu...转载 2020-04-10 15:42:45 · 1465 阅读 · 0 评论 -
ATT汇编与Intel汇编的区别,摘自《深入分析linux内核源码》一书
AT&T与Intel汇编语言的比较 我们知道,Linux是Unix家族的一员,尽管Linux的历史不长,但与其相关的很多事情都发源于Unix。就Linux所使用的386汇编语言而言,它也是起源于Unix。Unix最初是为PDP-11开发的,曾先后被移植到VAX及68000系列的处理器上,这些处理器上的汇编语言都采用的是AT&T的指令格式。当Unix被移植到i386时,自然也...原创 2019-09-23 13:50:28 · 336 阅读 · 0 评论 -
GCC/G++详细使用手册_编译(告警、优化、调试选项)
https://www.cnblogs.com/lsgxeva/p/7605141.html GCC(警告.优化以及调试选项)GCC(警告.优化以及调试选项) [介绍]gcc and g++分别是gnu的c & c++编译器gcc/g++在执行编译工作的时候,总共需要4步1.预处理,生成.i的文件预处理器cpp2.将预处理后的文件不转换成汇编语言,...转载 2019-02-22 15:47:37 · 12165 阅读 · 0 评论 -
HelloWorld CMake CMake中构建静态库与动态库及其使用
https://www.cnblogs.com/zhoug2020/p/5904206.html 继续完善Hello World,建立它的共享库, 包括静态库和动态库。 本节的任务:1,建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc向终端输出Hello World字符串。2,安装头文件与共享库。3, 编写一个程序...转载 2019-01-30 16:22:02 · 233 阅读 · 1 评论 -
cmake使用方法详解
[转]https://www.cnblogs.com/lidabo/p/7359422.html cmake 简介 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。CMake 使用方法 CMake的...转载 2019-01-28 14:30:39 · 391 阅读 · 0 评论 -
CMake 入门实战
[转]https://www.hahack.com/codes/cmake/什么是 CMake All problems in computer science can be solved by another level of indirection.David Wheeler 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的...转载 2019-01-28 14:28:29 · 168 阅读 · 0 评论 -
c语言和c++的相互调用
在实际项目开发中,c和c++代码的相互调用是常见的,c++能够兼容c语言的编译方式,但是c++编译器g++默认会以c++的方式编译程序,而c程序编译器gcc会默认以c的方式编译它,所以c和c++的相互调用存在一定的技巧。 1.c方式编译和c++方式编译 一般.cpp文件是采用g++去编译,.c文件是采用gcc编译,然而这不是绝对的。(1)gcc和g++都可以编译.c文...转载 2019-01-31 17:04:33 · 681 阅读 · 0 评论 -
GCC编译过程与动态链接库和静态链接库
1. 库的介绍库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。 windows上对应的是.lib .dll linux上对应的是.a .so在这里先介绍下Linu...转载 2018-12-25 20:24:49 · 277 阅读 · 0 评论 -
gcc指定头文件路径及动态链接库路径
gcc指定头文件路径及动态链接库路径 本文详细介绍了linux 下gcc头文件指定方法,以及搜索路径顺序的问题。另外,还总结了,gcc动态链接的方法以及路径指定,同样也讨论了搜索路径的顺序问题。本文包含了很多的例子,具有很强的操作性,希望读者自己去走一遍。一.#include <>与#include “”#include <>直接到系统指定的某些目录中去找某些...转载 2018-12-21 16:15:14 · 557 阅读 · 0 评论 -
CMAKE官方教程
很好的一个官方教程翻译文档。CMake简介CMake是一个跨平台的、开源的构建工具。cmake是makefile的上层工具,它们的目的正是为了产生可移植的makefile,并简化自己动手写makefile时的巨大工作量.目前很多开源的项目都可以通过CMake工具来轻松构建工程,例如博客之前分享的openHMD、hidapi、OSVR-Core等等,代码的分享者提供源代码和相应的Cmake配...转载 2018-12-08 15:31:00 · 197 阅读 · 0 评论