我们知道,Java或Android使用JNI可以实现与C或C++代码的交互,这在开发需要进行TCP或UDP通讯的java或android应用时显得尤为重要。Java或Android要调用JNI(Native)方法,需要先将封装好JNI接口的C或C++代码编译成动态函数共享库(我们通常以so作为其后缀),然后调用 System.loadLibrary方法将该so文件加载到Java或Android的运行环境去。编译该so文件很简单,Java加载的so文件直接使用gcc编译即可;Android加载的so则需要使用Android NDK内的ndk-build来编译。 阅读全文
在Linux下开发网络程序时,经常会遇到需要取本地网络接口名、IP、广播地址、子网掩码或者MAC地址等信息的需求,最常见的办法是配合宏SIOCGIFHWADDR、SIOCGIFADDR、SIOCGIFBRDADDR与SIOCGIFNETMASK作为参数调用函数ioctl分别获得MAC地址、IP地址、广播地址与子网掩码来实现。一次性获取此类信息的C语言代码实现如下。 阅读全文
我们可能会遇到这样的情景:必须在每个工作日定时执行Linux服务器上的某个程序。那么有没有办法实现这一功能呢?答案是肯定的。我们可以运用Shell脚本简单实现这一功能。 阅读全文
由于目前大家使用的Linux文件系统大多是Ext3格式的,文件一旦删除,很可能无法恢复,即便可以恢复也十分麻烦。所以执行rm命令变得异常危险,为此,我们可以编写两个Shell脚本来实现安全删除和恢复文件的功能。 阅读全文
一、CppTest简介
CppTest 是一个简单、轻便的 C++ 单元测试框架,它具有实用性与可扩展性,支持多种输出格式,添加新的测试用例极其方便。CppTest 最大的优点是容易理解、便于掌握和使用。 阅读全文
一、Makefile的语法
一个基本的 makefile 主要由目标对象、依赖文件、变量和命令四部分组成,目标对象是 make 命令最终需要生成的文件,通常为目标文件或可执行程序;依赖文件是生成目标对象所依赖的文件,通常为目标文件或源代码文件;使用变量保存与引用一些常用值可以增强 makefile 文件的简洁性、灵活性跟可读性,一处定义,多处使用,通常还可以对其内容进行赋值或追加;目标对象通常对应着依赖文件而成为一条规则,如“hello.o:hello.c hello.h”,而对应这条规则,通常跟随着一些命令,这些命令的格式跟 Shell 终端的格式一致,如“rm -f *.o”或“$(CC) -c hello.c -o hello.o”,注意每条命令语句前面必须加上制表符 tab 键,否则 make 命令将提示错误,不论是规则语句还是命令语句,都可以引用变量,如“$(CC)”,make 命令在执行这些语句之前都会先将变量替换为它对应的值。 阅读全文
对于 Linux 跟 Unix 系统而言,make 是一个极其重要的编译命令,我们在开发项目或者安装应用软件时,经常要用到 make 或 make install,对于一个包含几十、几百甚至成千上万个源文件的项目,如果每次都要键入 gcc 或 g++ 等命令来进行编译的话,那对于程序员简直就是一场噩梦,而使用 make 和 makefile 工具便可以简洁明了地理顺各个源文件之间纷繁复杂的相互关系,将大型项目分解成多个更易于管理的模块,自动完成编译工作,并且可以只对程序员上次编译后修改过的部分进行编译。
因此,有效的利用 make 和 makefile 工具可以大大提高程序开发的效率。同时也极大地减轻了 Linux 下应用程序安装的难度。接下来,就让我们来详细了解一下 make 及其描述文件 makefile。 阅读全文
程序编写完毕以后,可能或多或少会存在一些问题,为了解决这些问题,我们就需要对程序进行调试。最基本最明了的调试办法通常是使用 printf 函数在关心的代码位置打印关心的信息,但是出于代码简洁性的考虑,我们只会在必要的位置加上 printf 打印语句,这样就可能忽略很多潜在的问题,为了找出这些潜在的问题,我们需要用到调试器。 阅读全文
简单的说,编译器就是一个可执行程序,它专门用于将程序员易于编写的高级语言 (如 C 语言) 翻译为机器可以识别的低级语言。编译器将源代码编译为可执行程序的大致工作流程为如下:源代码 (source code) → 预处理 (preprocessor) → 编译器 (compiler) → 汇编 (assembler) → 目标代码 (object code) → 链接 (linker) → 可执行程序 (executables) 。Linux 下可用的编译器有 GCC、EGCS 和 PGCC,其中最常用最受欢迎的编译器便是 GCC,所以这里以 GCC 为代表来学习和使用一下 Linux 下的编译器。 阅读全文
SecureCRT 是一款支持 SSH 协议的终端仿真程序,同时支持 Telnet 和 Rlogin 协议。它包含 Windows、Linux 和 MacOS 三个平台的版本,是上述三类操作系统连接远程服务器的理想工具。介于它丰富的个性化功能跟便捷的文件传输方式,被众多的 Windows 用户所青睐。SecureCRT 是一款收费软件,用户只能试用 30 天,虽然 SecureCRT 还提供了 Linux 跟 MacOS 版本,但由于这两类系统上的 scp、ssh 等命令差不多可以免费实现 SecureCRT 的相关功能, 所以并不受 Linux 跟 MacOS 用户青睐。 阅读全文