Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

Linux平台Boost的编译方法

Linux平台Boost的编译方法

Linux平台Boost的编译方法Boost的编译使用的不是已经成为公认标准的make,而是专门为Boost开发的工具bjam(boost jam)。本文以boost1.40为例,在Linux平台的编程环境为gcc4.4.1,假设Boost代码在/usr/src/boost_1_40_0目录,步骤如下。1. 获得bjam获得bjam有3种方式,如下:方法1:Boost网站上提供了各种平台上预编译好的bjam可执行程序,可直接下载使用。方法2:从Boost源...
Linux平台代码覆盖率测试-GCC插桩基本概念和原理分析

Linux平台代码覆盖率测试-GCC插桩基本概念和原理分析

Content1. 序2. GCC插桩原理2.1 GCC编译插桩的过程2.2 GCC在何处插桩2.3 GCC如何才能在编译的同时插桩3. 小结1. 序在"Linux平台代码覆盖率测试-GCC插桩前后汇编代码对比分析"一文,我们已经分析了GCC插桩前后汇编代码的变化,对GCC插入的桩代码有比较全面的了解。本文将简单叙述GCC插桩的基本概念和原理。2. GCC插桩原理2.1 GCC编译插桩的过程GCC的插桩和编译过程如下图。过程描述:(1) 编译预处理程序对源...
Linux平台代码覆盖率测试-基本块图、插桩位置及桩代码执行分析

Linux平台代码覆盖率测试-基本块图、插桩位置及桩代码执行分析

0. 序 1. 基本块概念 2. 基本块图及插桩点分析 2.1 基本块图 2.2 有效基本块图 2.3 带桩点信息的有效基本块图 2.4 插桩位置及桩代码执行情况分析 3. 小结 Appendix: 源代码中对 Basic Block 的解释 0. 序 由前面几篇文章,例如:Linux 平台代码覆盖率测试 -gcov-dump 原理分析 http://www.linuxidc.com/Linux/2011-05/36536.htmLinux 平台代码覆盖率...
Linux-AS86汇编器

Linux-AS86汇编器

在Linux0.1x系统中使用了两种汇编器。一种是能产生16位代码的汇编器,使用配套的ld86链接器;另一种是GUN汇编器gas(as),使用GUN ld链接器来链接产生目标文件。Linux系统仅用as86来创建16位的启动引导扇区程序boot/bootsec.s和实模式下初始设置程序boot/setup.s的二进制执行代码。且该编译器快速小巧,并具有一些GUN gas没有的特性,例如宏以及更多的错误检测手段。汇编器的命令行基本格式是:as86 [选项] ...
何在Android平台下编译带STL的C++程序

何在Android平台下编译带STL的C++程序

Android操作系统由linux的内核和java的UI构成。但在已往的Android系统上,一般只能用java程序进行开发。若要使用C/C++,通常是将C/C++程序做成lib再由java来调用。理论上说,android上是可以直接用C/C++开发的,因为底层的系统就是linux内核。但以前发布的android NDK,最多是可以用C和最基本的C++进行开发,不能使用STL。所以也就有了Android NDK 的Crystax版本。所幸的是,最新发布的A...
多种方法获取sys_call_table(Linux系统调用表)的地址

多种方法获取sys_call_table(Linux系统调用表)的地址

一.方法一:常用方式我们首先需要找到call table-with-offset的特征,先看下面的代码syscall_call: call *sys_call_table(,%eax,4)假设我们没有vmlinux可供gdb反汇编,那也只有采用模拟的方式了,模拟出一个call *sys_call_table(,%eax,4),然后看其机器码,然后在system_call的附近基于这个特征进行寻找 :voidfun1() { printf("fun1 ");...
Linux内核hack-运行中动态添加系统调用

Linux内核hack-运行中动态添加系统调用

Linux中每次添加一个系统调用都要完成重新编译内核,然后制作initrd等工作,不得不说这是一件繁重的工作,很多人本来已经构思好了自己的一个系统调用,要添加到内核,然后却被这些工作所中断,毫不夸张的说,制作initrd就很麻烦,虽然基于cpio的initrd可以利用几条命令完成,然而只要有一个错误,你就不得不重启系统。 我们都知道,内核模块运行在内核态,可以访问所有的内存空间,那么能不能在系统运行期间,不用重新编译内核,而运用内核模块机制实现添加系统调...
Linux内核模块的强制删除-结束rmmod这类disk sleep进程

Linux内核模块的强制删除-结束rmmod这类disk sleep进程

一.问题: 前些日子在工作中遇到一个文件,当rmmod一个模块的时候,在模块的exit函数中阻塞了,rmmod进程杀也杀不掉,永远呆在那里,发现它已经是D(disk sleep)状态了,真的无能为力了吗?我不相信这个事实,所以今天在稍微闲暇的时候换换脑子,终于有了解决办法。二.分析: 解铃还须系铃人,既然是在内核中出了问题,还是需要在内核中寻找办法,解决这类问题的前提是对内核卸载模块的精确理解,流程都理解透了,害怕找不到原因吗?原因都找到了,办法肯定是有的...
Linux的配置接口-netlink原理和设计

Linux的配置接口-netlink原理和设计

Linux内核是可配置的,配置的方式有好多种呢!对于Linux平台上上的开发者和管理员来讲,这几种配置方式可困扰了不少人儿。这里的配置不是指运行中的内核动态的配置,而是指当有新的设备或者内核特性添加进内核的时候,用户需要进行的配置。本文主要列举三种配置方式,最终落实于netlink方式的配置。1.传统方式传统方式一般认为是使用ioctl或者系统调用的方式,如果使用ioctl,当我们为设备驱动或者内核本身增加一个新的配置时,需要增加一个新的ioctl命令,这...
Linux netlink机制-实现系统调用

Linux netlink机制-实现系统调用

《Linux的配置接口-netlink原理和设计》展示了netlink如何完成kill系统调用,然而这个例子不足以说明netlink的强大,如果我不实现一个netlink式的系统调用,很多人是不会信服的,本文就展示一个netlink实现的read调用。在展示代码之前,我还是要不厌其烦的说一下netlink的优点,总的来说,netlink有以下三个优点:1.netlink便于提供统一的入口,它的作用类似于socketcall。2.netlink仅提供链路,和...
Linux etlink机制总结

Linux etlink机制总结

1.为何我认为netlink要比procfs和sysfs更好?答曰:基于文件系统的方案好处在于文件系统是“设置即所见”,缺点也正在于这种所见即所得的特性 ,由于文件系统的管理目前是基于用户的,就算为sysfs/procfs设置了了内核访问策略,这种策略也会复杂的让人望而却步!管理员A希望为内核增加1000个配置,她使用了sysfs,管理员B希望在sysfs中查一个信息,他ls了一下,这要比xxx --help好用很多,然而“我的天啊,1000多个个文件,哪...
详解Linux下auto工具制作Makefile源码包(制作篇)

详解Linux下auto工具制作Makefile源码包(制作篇)

一、 概述为了更好的制作configure与Makefile,我先把制作流程给写在这里,好让大伙都有个心理准备。这里只说流程,不做解释。(附图供参考)1、autosan命令生成configure.scan文件,这只是个模板,我们重新编辑这个文件,并把它保存为configure.in文件。2、aclocal命令生成aclocal.m4文件。3、autoheader命令生成config.h.in。前提是aclocal.m4和configure.in必须生成。4...
详解Linux下auto工具制作Makefile源码包(工具安装篇)

详解Linux下auto工具制作Makefile源码包(工具安装篇)

一、引子最近学习安装源码包,然后公司开发也需要制作源码包,所以就稍微学习了一下automake与autoconf制作configure以及Makefile。感觉作为一个linux开发人员,不知道制作源码包,真是妄为linux人呐!学习的同时,就顺便整理了一下网上的资料,并记录下来,供以后查阅,也为方便初学者。题目说的有点大了,其实只是笔记而已,只供菜鸟使用。咱们都知道make好用,但是大型的软件make是很麻烦的,为了解决这个问题,先人们就发明了autoc...
Android线程模型和AsyncTask

Android线程模型和AsyncTask

Android 的线程模型:当一个 android 的应用运行后, 就会有一个 UI 的 main 线程启动 , 这是一个非常重要的线程,它负责把事件分派到相应的控件,其中就包括屏幕绘图事件,它同样是用户与 android 控件 交互的线程。比如,当你在屏幕上的 EditText 上输入文字, UI 线程会把这个事件分发给刚输入文字的 EditText ,紧接会向事件队列发送一个更新 ( invalidate )请求。 UI 线程会把这个请求移出事件队列并...
Android Activity生命周期以及LoCat的使用

Android Activity生命周期以及LoCat的使用

Activity主要有三个状态:当在屏幕前台时(位于当前任务堆栈的顶部),它是活跃或运行的状态。它就是相应用户操作的Activity。当它失去焦点但仍然对用户可见时,它处于暂停状态。即:在它之上有另外一个Activity。这个Activity也许是透明的,或者未能完全遮蔽全屏,所以被暂停的Activity仍对用户可见。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并连接至窗口管理器),但当系统处于极低内存的情况下,仍然可以杀死这个Act...
<< 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 >>