make

技巧:Linux 动态库与静态库制作及使用详解

五迷三道 提交于 2019-12-02 18:56:19
两个要知道的基本知识 Linux 应用程序因为 Linux 版本的众多与各自独立性,在工程制作与使用中必须熟练掌握如下两点才能有效地工作和理想地运行。 Linux 下标准库链接的三种方式(全静态 , 半静态 (libgcc,libstdc++), 全动态)及其各自利弊。 Linux 下如何巧妙构建 achrive(*.a),并且如何设置链接选项来解决 gcc 比较特别的链接库的顺序问题。 三种标准库链接方式选项及对比 为了演示三种不同的标准库链接方式对最终应用程序产生的区别, 这里用了一个经典的示例应用程序 HelloWorld 做演示,见 清单 1 HelloWorld 。 整个工程可以在文章末尾下载。 清单 1. HelloWorld #include <stdio.h> #include <iostream> using std::cout; using std::endl; int main(int argc, char* argv[]) { printf("HelloWorld!(Printed by printf)\n"); cout<<"HelloWorld!(Printed by cout)"<<endl; return 0; } 三种标准库链接方式的选项及区别见 表 1 表 1. 三种标准库链接方式的选项及区别 标准库连接方式 示例连接选项 优点 缺点 全静态

linux的自我修养---安装软件

萝らか妹 提交于 2019-12-02 09:39:01
0、怎么安装应用软件?     我的软件安装在什么地方?     如何删除不要的应用软件?     ……     下面,我们就一起来认识一下这些方面的问题。 一、 解析Linux应用软件安装包:     通常Linux应用软件的安装包有三种:     1) tar包,如software-1.2.3-1.tar.gz。它是使用UNIX系统的打包工具tar打包的。     2) rpm包,如software-1.2.3-1.i386.rpm。它是Redhat Linux提供的一种包封装格式。     3) dpkg包,如software-1.2.3-1.deb。它是Debain Linux提供的一种包封装格式。      而且,大多数Linux应用软件包的命名也有一定的规律,它遵循:     名称-版本-修正版-类型     例如:     1) software-1.2.3-1.tar.gz 意味着:     软件名称:software     版本号:1.2.3     修正版本:1      类型:tar.gz,说明是一个tar包。     2) sfotware-1.2.3-1.i386.rpm     软件名称:software     版本号:1.2.3     修正版本:1     可用平台:i386,适用于Intel 80x86平台。     类型:rpm

Linux下安装软件命令详解

一个人想着一个人 提交于 2019-12-02 09:36:02
Linux下安装软件命令详解 LINUX 下安装软件方法命令方法 0、怎么安装应用软件?     我的软件安装在什么地方?     如何删除不要的应用软件?     ……     下面,我们就一起来认识一下这些方面的问题。 一、 解析Linux应用软件安装包:     通常Linux应用软件的安装包有三种:     1) tar包,如software-1.2.3-1.tar.gz。它是使用UNIX系统的打包工具tar打包的。     2) rpm包,如software-1.2.3-1.i386.rpm。它是Redhat Linux提供的一种包封装格式。     3) dpkg包,如software-1.2.3-1.deb。它是Debain Linux提供的一种包封装格式。      而且,大多数Linux应用软件包的命名也有一定的规律,它遵循:     名称-版本-修正版-类型     例如:     1) software-1.2.3-1.tar.gz 意味着:     软件名称:software     版本号:1.2.3     修正版本:1      类型:tar.gz,说明是一个tar包。     2) sfotware-1.2.3-1.i386.rpm     软件名称:software     版本号:1.2.3     修正版本:1     可用平台:i386

linux下的软件安装命令

放肆的年华 提交于 2019-12-02 07:24:16
---------------------------------------------------------------- 或许你对于linux还不够了解,但是一旦你步入公司后,你就会发现linux是无处不在,好多东西都是基于于其它服务器(Linux,HP……)相连接来操作一系列的工作,而离不开的就是用命令来操作一切了,下面我就说说如何在linux上安装软件吧! --------------------------------------------------------------- LINUX 下安装软件方法命令方法 怎么安装应用软件?     我的软件安装在什么地方?     如何删除不要的应用软件?     ……     下面,我们就一起来认识一下这些方面的问题。 一、 解析Linux应用软件安装包:     通常Linux应用软件的安装包有三种:     1) tar包,如software-1.2.3-1.tar.gz。它是使用UNIX系统的打包工具tar打包的。     2) rpm包,如software-1.2.3-1.i386.rpm。它是Redhat Linux提供的一种包封装格式。     3) dpkg包,如software-1.2.3-1.deb。它是Debain Linux提供的一种包封装格式。      而且

[转]详细易懂的Linux makefile教程(7)

一个人想着一个人 提交于 2019-12-02 00:21:57
使用make更新函数库文件 ——————————— 函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令"ar"来完成打包工作。 一、函数库文件的成员 一个函数库文件由多个文件组成。你可以以如下格式指定函数库文件及其组成: archive(member) 这个不是一个命令,而一个目标和依赖的定义。一般来说,这种用法基本上就是为了"ar"命令来服务的。如: foolib(hack.o) : hack.o ar cr foolib hack.o 如果要指定多个member,那就以空格分开,如: foolib(hack.o kludge.o) 其等价于: foolib(hack.o) foolib(kludge.o) 你还可以使用Shell的文件通配符来定义,如: foolib(*.o) 二、函数库成员的隐含规则 当make搜索一个目标的隐含规则时,一个特殊的特性是,如果这个目标是"a(m)"形式的,其会把目标变成"(m)"。于是,如果我们的成员 是"%.o"的模式定义,并且如果我们使用"make foo.a(bar.o)"的形式调用Makefile时,隐含规则会去找"bar.o"的规则,如果没有定义bar.o的规则,那么内建隐含规则生 效,make会去找bar.c文件来生成bar.o,如果找得到的话,make执行的命令大致如下: cc -c

Vim 实用技术,第 1 部分: 实用技巧

时光怂恿深爱的人放手 提交于 2019-12-01 15:18:26
0. Vim 简介 作为开源世界最重要的编辑器之一(另一个是 Emacs),Vim 以其强大的功能和可定制能力被众多开发者所喜爱。不过,也许就是因为 Vim 的功能太强大了,要真正用好 Vim 并不容易。本文作者在多年的实际使用中逐渐掌握了一些实用技术,在此介绍给大家。——本文并不企图对 Vim 作全面而系统的介绍,但也绝非零星地点到即止;而是希望通过介绍一些重要特性和提供相关参考信息,引起大家的兴趣,去深入挖掘其能力,真正把这一强大的工 具用好。 下面首先对 Vim 做一下最基本的介绍,并给出一些参考信息,以方便对 Vim 不熟悉的读者也能够理解并自己查阅进一步信息。 与大部分其它编辑器不同,进入 Vim 后,缺省状态下键入的字符并不会插入到所编辑的文件之中。Vim 的模式(mode,可以简单地理解为“状态”)概念非常重要。需要知道,Vim 有以下几个模式: ●正常(normal)模式,缺省的编辑模式;下面如果不加特殊说明,提到的命令都直接在正常模式下输入;任何其它模式中都可以通过键盘上的 Esc 键回到正常模式。 ●命令(command)模式,用于执行较长、较复杂的命令;在正常模式下输入“:”(一般命令)、“/”(正向搜索)或“?”(反向搜索)即可进入该模式;命令模式下的命令要输入回车键(Enter)才算完成。 ●插入(insert)模式,输入文本时使用;在正常模式下键入“i”

[makefile笔记]之三--make的递归执行

我的未来我决定 提交于 2019-11-30 12:58:55
http://hi.baidu.com/kj_28/item/906c85040ea8b7103b53ee2b make的递归执行 make的递归过程指的是:在Makefile中使用“make”作为一个命令来执行本身或者其它makefile文件的过程。递归调用在一个存在有多级子目录的项目中非常有用。例如,当前目录下存在一个“subdir”子目录,在这个子目录中有描述此目录编译规则的makefile文件,在执行make时需要从上层目录(当前目录)开始并完成它所有子目录的编译。那么在当前目录下可以使用这样一个规则来实现对这个子目录的编译 例如,我们有一个子目录叫subdir,这个目录下有个Makefile文件,来指明了这个目录下文件的编译规则。那么我们总控的Makefile可以这样书写: subsystem: cd subdir && $(MAKE) 其等价于: subsystem: $(MAKE) -C subdir 对这两个规则的命令进行简单说明,规则中“$(MAKE)”是对变量“MAKE”的引用(变量“MAKE”的值指向make可执行文件,一般为/usr/bin/make)。第一个规则命令的意思是:进入子目录,然后在子目录下执行make。第二个规则使用了make的“-C”选项,同样是首先进入子目录而后再执行make。 第二个规则的命令意思即为“cd subdir && usr

Linux下安装软件命令详解

回眸只為那壹抹淺笑 提交于 2019-11-30 12:04:44
LINUX 下安装软件方法命令方法 0、怎么安装应用软件?     我的软件安装在什么地方?     如何删除不要的应用软件?     ……     下面,我们就一起来认识一下这些方面的问题。 一、 解析Linux应用软件安装包:     通常Linux应用软件的安装包有三种:     1) tar包,如software-1.2.3-1.tar.gz。它是使用UNIX系统的打包工具tar打包的。     2) rpm包,如software-1.2.3-1.i386.rpm。它是Redhat Linux提供的一种包封装格式。     3) dpkg包,如software-1.2.3-1.deb。它是Debain Linux提供的一种包封装格式。      而且,大多数Linux应用软件包的命名也有一定的规律,它遵循:     名称-版本-修正版-类型     例如:     1) software-1.2.3-1.tar.gz 意味着:     软件名称:software     版本号:1.2.3     修正版本:1      类型:tar.gz,说明是一个tar包。     2) sfotware-1.2.3-1.i386.rpm     软件名称:software     版本号:1.2.3     修正版本:1     可用平台:i386,适用于Intel 80x86平台。

安装oracle11g win64 版本后,使用plsql登录时,报错

不羁岁月 提交于 2019-11-30 02:14:37
安装oracle11g win64 版本后,使用plsql登录时,出现报错: make sure you have the 32 bits oracle client installed,这里有两种解决方式 1、安装32位Oracle 11g Client; 2、如果已经安装了64位Oracle 11g Client ,进行如下操作: 1)在oracle官网(http://www.oracle.com/technetwork/topics/winsoft-085727.html)下载文件: instantclient-basic-nt-11.2.0.3.0.zip ; 2) 将文件解压到任一文件夹下,如D:\instantclient_11_2; 3) 打开PL/SQL developer,登录时点击取消,进入PL/SQL developer,选择Tools->>Preferences 4)修改参数: Oracle Home :OraDb11g_home1 OCI Library :D:\instantclient_11_2\oci.dll 5)配置环境变量,添加两个变量 变量一:指定 数据库 使用的编码,如果不设置,所看到的中文数据都会是乱码。 变量名:NLS_LANG 变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK 变量二

读书之--跟我一起写Makefile

偶尔善良 提交于 2019-11-29 16:31:48
前言 以前在Windows下学习的时候,我一直使用Eclipse写C语言程序,比较标准C,GTK+.后来忽有一天学习Linux的时候,看到软件安装那里说了make这个工具,一时之间大是喜欢.因为我本人特别喜欢命令行的方式,于是我把系统换成了Ubuntu,安装了gcc,g++,gdb,make等一系列工具,下载了网上流传十分之广的<跟我一起写Makefile>. 然后我现在写程序,学校的作业我就是在Windows下用eclipse写代码,用UE写makefile,在CMD中make编译 如果是我自己学习的话,那绝对是Linux下写,那编译速度,那流畅,那感觉,, 我以前的makefile: 下面是一个很小的程序,就是在控制台输入两个整数,然后输出它们的和 test.c//入口 #include<stdio.h> #include"sum.h" int main( void ){ int a = 0; int b = 0; puts("输入两个整数:"); scanf("%d %d",&a,&b); printf("%d + %d = %d\n",a,b,sum(a,b)); return 0; } sum.h//函数声明 #ifndef _SUM_H_ #define _SUM_H_ int sum( int a , int b ); #endif//_SUM_H_ sum.c/