标签:
1.开放源码、编译程序、可执行文件
开放源码:程序代码,写给人类看的程序语言,但机器并不认识,所以无法执行。
编译程序:将程序代码转译称为机器看得懂的语言,类似翻译者的角色。
可执行文件:经过编译程序变成二进制程序后机器看得懂所以可以执行的文件。
函数库:类似子程序的角色,可以被调用来执行的一段功能函数。
编译:编译过程会生成所谓的目标文件,这些文件是以*.o的扩展名形式存在的。
链接: 在程序中有时会引用、调用其他的外部子程序,或者利用其他软件提供的功能函数,这时就必须在编译过程中将函数库加进去。这样编译程序就可以将所有的程序代码与函数库做一个链接以生成正确的执行文件。
2.configure、make、tarball的软件
configure:根据源码检测程序找到所需要的函数库、编译器及其他资料,主动建立makefile文件。
make:根据makefile定义,设用源代码、函数库、编译器来编译。
tar文件包括:1.原代码文件,2.检测程序文件,3.本软件的建议说明与安装说明。
3.gcc的简易用法
gcc -c hello.c --->将源码编译成为目标文件,并不制作链接等功能。
gcc -O hello.c -c --->编译的时候依据操作环境给予优化执行速度。
gcc sinc.c -lm -L /usr/lib -I /usr/include
-lm指的是libm.so或libm.a这个函数库
-L后面接的路径是刚才上面那个函数库的搜索目录
-I后面接的是源码内的include文件的所在目录
gcc -o hello hello.c 将编译的结果输出成某个特定名
gcc -o hello hello.c -Wall 输出更多的信息说明
4.makefile的基本语法和变量
makefile中的变量:
1.变量与变量内容以“=”隔开,同时两边可以具有空格
2.变量左边不可以有不可有<tab>
3.变量与变量内容两边不能有“:”
4.习惯上变量以“大写字母”为主,运用变量以${}获取
makefile的文件格式:
目标(target) :目标文件1 目标文件2
<tab> gcc -o 欲新建的可执行文件1 目标文件1 目标文件2
5.tarball软件安装的过程
./configure
--help
--prefix=/path/to/somewhere
--sysconfdir=/PATH/TO/CONFFILE_PATH
功能:1、让用户选定编译特性;2、检查编译环境;
1.tar xf tengine-1.4.2.tar.gz
cd tegnine-1.4.2
./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf
make
make install
/usr/local/tengine/sbin/nginx
1、修改PATH环境变量,以能够识别此程序的二进制文件路径;
修改/etc/profile文件
在/etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义
export PATH=$PATH:/path/to/somewhere
2、默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径:
在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;
# ldconfig 通知系统重新搜寻库文件
-v: 显示重新搜寻库的过程
3、头文件:输出给系统
默认:/usr/include
增添头文件搜寻路径,使用链接进行:
/usr/local/tengine/include/ /usr/include/
两种方式:
ln -s /usr/local/tengine/include/* /usr/include/ 或
ln -s /usr/local/tengine/include /usr/include/tengine
4、man文件路径:安装在--prefix指定的目录下的man目录;/usr/share/man
1、man -M /PATH/TO/MAN_DIR COMMAND
2、在/etc/man.config中添加一条MANPATH
6.函数库管理
静态库:
扩展名 .a
编译行为:编译的时候直接整合到执行程序当中。
独立执行状态:编译成功的可执行文件可以独立执行。
升级难易度:函数库升级,将此含数据纳入的所有程序都得重新编译
动态库:
扩展名 .so
编译行为: 动态函数库在编译的时候,在程序中只有一个指向的位置而已。
独立执行的状态:不能独立执行。
升级难易度:相对容易。
7.ldconfig和/etc/ld.so.conf
如果我们将常用到的动态函数库先加载到内存中,当软件需要使用函数动态库时,就不需要从头到硬盘里面读取,这样就可以加快动态函数库的读取速度。
操作步骤:
1).首先,我们必须要要在/etc/ld.so.conf里面写下想要读入高速缓存当前的动态函数库所在的目录
2).接下来则是利用ldconfig这个可执行文件将2507803129的数据读入缓存中
3).同时也将数据记录一份在/etc/ld.so.cache中
1. 添加在/etc/ld.so.cache中一行,或者在/etc/ld.so.cache.d中添加一个.conf文件
2.ldconfig
3.ldconfig -p
8.ldd视察相关版本库之间的相关性
ldd -v:列出所有内容
-d:重新将有丢失的link点显示出来
-r:将ELF有关的错误内容显示出来
例子:
linux下安装jdk1.7
1.首先需要查看当前的linux系统是32位的还是64位的,
2.从官网上下载jdk版本,现在已经到1.8版本了,不过还一直在用1.7版本。放这儿一个链接
http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260.html
这里选择下载的是jdk-7u79-linux-i586.tar.gz,该归档文件时一个二进制文件,直接解压缩就可以使用。
3.上传到linux服务器,具体目录为
4.对jdk进行设定配置文件
5.jdk的验证和使用
标签:
原文地址:http://my.oschina.net/alfredliukai/blog/506010