linux软件安装

yum>RPM包>源码安装


安装开发工具:yum groupinstall "Development Tools"
yum update
yum search
yum install
yum remove xxx
yum list installed
下载fastestmirror插件,它会自动选择最快的mirror:
#yum install yum-plugin-fastestmirror
yum-plugin-protect-packages默认包含在yum中 避免 yum 软件包或其它 yum 所依赖的软件包被移除,它也能避免许多系统运行所必要的软件包被移除
清除本地镜像缓存
# yum clean all
将服务器上的软件包信息缓存到本地,以提高搜索安装软件的速度
# yum makecache


安装epel(centos6)
包含一个叫做epel-release的包,还有一个叫做epel-testing的源
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
配置/etc/yum.repos.d/epel.repo


devel包,包含头文件--编译等
普通包,链接库--只运行程序


RPM默认安装路径:
/etc 一些设置文件放置的目录如/etc/crontab
/usr/bin 一些可执行文件
/usr/lib 一些程序使用的动态函数库
/usr/share/doc 一些基本的软件使用手册与帮助文档
/usr/share/man 一些man page文件


源码安装默认目录
/usr/local




rpm -ivh  安装
rpm -e 删除
rpm -e --nodeps 强行删除
rpm -q 查询




源码安装删除
make uninstall
手动删除文件(默认位置/usr/local/..)
安装时最好--prefix指定独立目录,方便删除,并:
/etc/ld.so.conf or LD_LIBRARY_PATH(多版本或版本冲突时优先使用)
C_INCLUDE_PATH

pkgconfig路径

 

 

 

二进制程序的搜索路径顺序为PATH环境变量中所设定




编译时静态库和动态库查找顺序
1.-L  显示设置
2.LD_LIBRARY_PATH
3.gcc --print-search-dirs所打印出的路径,或通过GCC_EXEC_PREFIX来设定
  一般顺序/usr/lib64  /lib64/  /usr/lib  /lib 由gcc安装位置有关  
   如libstc++ 可能版本相下兼容,所以低版本gcc仍然可以用
4.binutils中的ld所设定的缺省搜索路径顺序,编译binutils时指定。(可以通过“ld --verbose | grep SEARCH”来查看)
   /usr/local/lib64  /lib64   /usr/lib64  /usr/local/lib   /lib  /usr/lib


如果既有静态库又有动态库,在编译时默认的使用动态库
动态链接库能被系统中其它程序共享,其名字应符合 lib*.so.* 这种格式,第一个*通常表示为简写的库名,第二个*通常表示为该库的版本号
ldd+bin  查找可执行文件的库依赖
ar -t 查询静态库中的文件 or nm (详细到函数)
strings /lib/libc.so.6 |grep GLIBC 查看GLIB库
.la   It is textual file that includes description of library,It allows libtool create platform independent names.
动态库和静态库使用方法相同 -lXXX
编译静态程序,编译阶段gcc会链接动态或静态库,ld链接阶段必须要用使用函数的静态库






运行时共享库查找顺序(由ld-linux.so实现)
1.编译时内嵌进去的动态库路径(ldd查看)
2.LD_LIBRARY_PATH
3.查找/etc/ld.so.cache,该缓存文件由ldconfig工具读取/etc/ld.so.conf文件(当然还包括其他文件)来生成 
   设置/usr/local/lib64  /usr/local/lib,获得更高优先级
4.查找系统缺省库目录 一般顺序 /lib64/ /usr/lib64  /lib  /usr/lib
由glibc安装位置有关,Glibc is responsible for creating ld-linux.so.2




头文件路径顺序
1.-I
2.环境变量C_INCLUDE_PATH/CPLUS_INCLUDE_PATH/OBJC_INCLUDE_PATH来搜索头文件位置
3./usr/include,/usr/local/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.4/include/
最后一行是gcc程序的库文件地址,各个用户的系统上可能不一样




pkg-config工具(编译时寻找库和头文件)
pkg-config路径 /usr/lib64/pkconfig or  PKG_CONFIG_PATH
pkg-config --list-all
pkg-config --cflags
pkg-config --libs
--cflags-only-I 




gcc的编译流程分为四个步骤,分别为:
1.预处理(Pre-Processing)
 预处理器(cpp)根据以字符#开头的命令(directives),修改原始的C程序。如hello.c中#include <stdio.h>指令告诉预处理器读系统头文件stdio.h的内容,并把它直接插入到程序文本中去。结果就得到另外一个C程序,通常是以.i作为文件扩展名的。
2.编译(Compiling)
 Gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc把代码翻译成汇编语言。
3.汇编(Assembling)
 把编译阶段生成的”.s”文件转成目标文件,读者在此可使用选项”-c”就可看到汇编代码已转化为”.o”的二进制目标代码了
4.链接(Linking)
 连接动态或静态函数库






编译静态库
gcc -c
ar rcs XXX.a XXX.o ...


编译动态库
gcc -shared -fPIC -o libmyhello.so hello.o










gcc 命令几个重要选项:
-E 仅作预处理,不进行编译、汇编和链接
-S 编译到汇编语言,不进行汇编和链接
-c 编译、汇编到目标代码,不进行链接
-O 编译生成二进制文件
-shared 该选项指定生成动态连接库,一般需要-fPIC一起使用
-fPIC:表示编译为位置独立的代码
-shared 动态链接
-static 静态连接
-nostdlib 不链接系统标准启动文件和标准库文件(ld阶段),必须显示调用libc和libstc++
-nostartfiles 不链接系统标准启动文件  crt1.o crti.o crtn.o
-fopenmp 启用openmp
-pthread POSIX多线程
-Wall 启用所有警告提示
-g   debug with GDB
-O0  默认,减少编译时间,debug时用
-O1  优化级别1
-O2  优化级别2
-O3  优化级别3
-Os  启用-O2并优化size
-I
-L
-llibrary
-l library
-m32
-m64
-mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -msse4 -mavx
-mtune=generic,native,i386...  特定cpu优化代码
-march=native,i386...  启用特定cpu指令
-flto 链接时优化开关










GNU Binutils 通常搭配GNU Compiler Collection、make、和GDB这些程序来使用
binutils包含底下这些指令:
as 汇编器
ld 连接器
gprof 性能分析工具程序
addr2line 从目标文件的虚拟地址取得文件的行号或符号
ar 可以对静态库做创建、修改和取出的操作。
c++filt 解码 C++ 的符号
dlltool 创建Windows 动态库
gold 另一种连接器
nlmconv 可以转换成NetWare Loadable Module目标文件格式
nm 显示目标文件内的符号
objcopy 复制目标文件,过程中可以修改
objdump 显示目标文件的相关信息,亦可反汇编
ranlib 产生静态库的索引
readelf 显示ELF文件的内容
size 列出总体和section的大小
strings 列出任何二进制档内的可显示字符串
strip 从目标文件中移除符号
windmc 产生Windows信息资源
windres Windows 资源档编译器




libc  标准C函数库GNU实现(glibc), libc.so.6 
libstc++ 标准c++库GNU实现(glibc++),包含部分静态连接进去的glibc  libstdc++.so.6
glib 是Gtk+库和Gnome的基础
libgcc  
GCC provides a low-level runtime library, libgcc.a or libgcc_s.so.1 on some platforms,
Most of the routines in libgcc handle arithmetic operations that the target processor cannot perform directly.
This includes integer multiply and divide on some machines, and all floating-point and fixed-point operations on other machines.
libgcc also includes routines for exception handling, and a handful of miscellaneous operations.






类UNIX上对各种硬件多线程实现的统一接口:IEEE POSIX 1003.1c standard (1995)
对POSIX的实现:Pthread
Pthread:a set of C language programming types and procedure calls, implemented with a pthread.h header/include file and a thread library
编译:gcc -pthread
################################################################################
MMX:SIMD多媒体指令集,被SSE取代
SSE:SIMD 流指令扩展指令集
AVX:高级矢量扩展指令


CORE-AVX2 未来的英特尔处理器
CORE-AVX-I 第三代英特尔 酷睿 i7 处理器
第三代英特尔 酷睿 i5 处理器
AVX 第二代英特尔 酷睿 i7 处理器
第二代英特尔 酷睿 i5 处理器
第二代英特尔 酷睿 i3 处理器
英特尔  至强 处理器 E5 家族
英特尔  至强 处理器 E3 家族 
SSE4.2 上一代英特尔 酷睿 i7 处理器
上一代英特尔 酷睿 i5 处理器
上一代英特尔 酷睿 i3 处理器
英特尔 至强 55XX 系列
英特尔 至强 56XX 系列
英特尔 至强 75XX 系列
英特尔 至强 处理器 E7 家族
SSE4.1 英特尔 至强 74XX 系列 
四核英特尔  至强 54XX、33XX 系列 
双核英特尔  至强 52XX、31XX 系列 
英特尔  酷睿  2 至尊 9XXX 系列 
英特尔  酷睿  2 四核 9XXX 系列 
英特尔  酷睿  2 双核 8XXX 系列
英特尔  酷睿  2 双核 E7200 
SSSE3 四核英特尔  至强  73XX、53XX、32XX 系列 
双核英特尔  至强  72XX、53XX、51XX、30XX 系列 
英特尔  酷睿  2 至尊 7XXX、6XXX 系列 
英特尔  酷睿  2 四核 6XXX 系列 
英特尔  酷睿  2 双核 7XXX(不包括 E7200)、6XXX、5XXX、4XXX 系列 
英特尔  酷睿  2 单核 2XXX 系列 
英特尔  奔腾  双核处理器 E2XXX、T23XX 系列
SSE3_ATOM 英特尔  凌动  处理器
SSE3 双核英特尔  至强  70XX、71XX、50XX 系列 
双核英特尔  至强  处理器(ULV 和 LV)1.66、2.0、2.16 
双核英特尔  至强  2.8 
支持 SSE3 指令集的英特尔  至强  处理器 
英特尔  酷睿  双核 
英特尔  酷睿  单核 
英特尔  奔腾  双核处理器 T21XX、T20XX 系列 
英特尔  奔腾  处理器至尊版 
英特尔  奔腾  D 
支持 SSE3 指令集的英特尔  奔腾  4 处理器
SSE2(default) 英特尔  至强  处理器 
英特尔  奔腾  4 处理器 
英特尔  奔腾  M
IA32 英特尔  奔腾  III 处理器
英特尔  奔腾  II 处理器
英特尔  奔腾  处理器

 

 

 

/usr/libexec : Binaries run by other programs 





补丁:
patch -p1 < {/path/to/patch/file}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值