Linux系统下程序运行会实时的用到相关动态库,某些场景下,比如需要裁剪不必要的动态库时,就需要查看哪些动态库被用到了. 以运行VLC为例. VLC开始运行后,首先查看vlc的PID,比如这次查到的VLC PID是5590. zlf@ubuntu:/$ ps -ef |grep vlc zlf : pts/ :: ./vlc zlf : pts/ :: grep --color=auto vlc 查看/proc/5590/下的maps文件,即可看到VLC运行时用到的所有动态库. zlf@ubun…
看以下例子 main.c extern int x; int main() { int y = 100; swap(&x,&y); return 0; } int x = 1; void swap(int* x, int* y) { int temp = *x; *x = *y; *y = temp; } 段的合并 main.o swap.o 链接生成静态库: ld main.o swap.o -e main -o stlink 将多个目标链接生成可执行文件,默认好像是静态链接 可以看到生…
一.概述 glog是google推出的一款轻量级c++开源日志框架,源码在github上,目前最新release版本是v0.3.5. githut地址:https://github.com/google/glog,避免新版本踏坑,习惯性选用低版本v0.3.3. 二.生成windows库 源码下载完成后,根目录下会有google-glog.sln工程文件呢,用visual studio打开会有四个项目,分别如下: 1.libglog:生成动态库的源码 2.libglog_static:生成静态库的…
一.背景     在linux命令行中执行程序,程序通常会占用当前终端,如果不启动新的终端就没法执行其他操作.简单可以通过'&'将程序放到后台执行,但是这种方法有个问题就是,一旦连接远程服务器的网络异常或者本机ssh客户端.系统等关闭亦或出现问题导致连接断开,那么放到后台执行的程序就会被终止.     对于需要长时间运行的守护进程或者服务端程序这种异常断开造成的进程终止不可接受.下面就介绍三种解决这种问题的通用方案(不涉及程序改造)   二.nohup命令     在启动程序命令后面添加&…
跟着韦东山学习Linux: 今天系统系统性的学了代码的编译下载,条记录一下: 一,代码:001_led_on.S,就把下面代码编译后Bin文件下载进2440处理器. /* * 点亮LED1: gpf4 */ .text.global _start _start: /*配置GPF4为输出引脚 *******************/ldr r1,=0x56000050ldr r0,=0x100str r0,[r1] /*******把GPF4输出高电平把0写到地址0x56000054 ******…
1.默认Python安装情况 一般情况,Linux会预装Python的,版本较低,比如Ubuntu15的系统一般预装的是Python2.7.10. 使用命令:which python可以查看当前的python的安装路径: 打开对应路径就可以看到: 如果没有明确必须要使用Python3的版本,可以直接使用2.7.10的版本. 明确需要使用Python3版本,再进行更改. 这里需要说明一点:上图中存在有python,python2,python3,说明安装了2和3的版本, 2.更改安装Python3…
Linux环境下使用eclipse开发C++动态链接库程序 Linux中也有类似windows中DLL的变成方法,只不过名称不同而已.在Linux中,动态链接叫做Standard Object,生成的动态链接文件为*.so.详细请参考相关文档. 开发环境:Eclipse 3.4.2 G++:4.3.2 1. 创建动态链接库 (1)在Eclipse中创建新的C++工程 File->New->Project->C++->C++ Project,选择Shared Library. (2)…
前言 前一篇文章详细讲解了如何在Windows环境下安装虚拟机+Linux系统,并且成功部署了JDK. 不过部署完JDK之后,我们判断部署是否成功的依据是看"java -version"命令是否有正确的内容打印,也许这并不具备太大的说服力.可能能够运行起一个正确的java程序来,不管从感性角度还是理性角度来说,都会有一个更好的认识. 所以本文写一段很简单的java代码,并且在Linux环境下编译运行,以证明JDK部署得确实没有问题. 代码验证JDK部署是否正确 1.级联建立两个目录 首…
基础的缓冲区溢出实践通常需要确定运行状态下程序中的某些局部变量的地址,如需要确定输入缓冲区的起始地址从而获得注入缓冲区中的机器指令的起始地址等.在 Linux 环境下,可通过 gdb 对程序进行动态调试,从而获得程序运行状态下的信息( 关闭 ALSR 机制 ),基础的 gdb 操作可参见笔者的文章Linux下编辑.编译.调试命令总结——gcc和gdb描述.使用 gdb 可以方便的获取程序动态运行状态下的信息,但通过 gdb 动态调试获取的诸如缓冲区的起始地址等信息可能与程序实际运行时的信息并不相…
1.proc是oracle用来预编译嵌入SQL语句的c程序. 2.如何使用proc工具 在Linux环境下,首先确保gcc编译器正常使用,安装oracle数据库或者客户端,一般就会默认安装pro*c/c++工具.确保proc正常使用需要配置以下环境变量,这些环境变量一般配置在(.profile)文件里,修改.profile文件后要执行(source .profile)或(. .profile) ORACLE_BASE=/suseDba/oracle ORACLE_HOME=$ORACLE_BAS…