⑴ 如何查看linux版本的型号
Linux系统如何查看版本信息
1、查看当前操作系统内核信息
uname -a
$ uname -a
Linux vm-web 3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 19:03:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
2、查看当前操作系统版本信息
cat /proc/version
$ cat /proc/version
Linux version 3.10.0-693.21.1.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Wed Mar 7 19:03:37 UTC 2018
3、查看当前操作系统发行版信息
cat /etc/issue 或 cat /etc/redhat-release
$ cat /etc/issue
\S
Kernel \r on an \m
$ cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
4、查看cpu相关信息,包括型号、主频、内核信息等
cat /proc/cpuinfo
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 45
model name : Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
stepping : 7
microcode : 0xffffffff
cpu MHz : 2199.998
cache size : 20480 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm xsaveopt
bogomips : 4399.99
clflush size : 64
cache_alignment : 64
address sizes : 44 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 45
model name : Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
stepping : 7
microcode : 0xffffffff
cpu MHz : 2199.998
cache size : 20480 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm xsaveopt
bogomips : 4399.99
clflush size : 64
cache_alignment : 64
address sizes : 44 bits physical, 48 bits virtual
power management:
5、列出所有版本信息
lsb_release -a
$ lsb_release -a
-bash: lsb_release: command not found
出现command not found说明没安装lsb_realease,可以执行命令yum install -y redhat-lsb安装lsb_realease,安装完成后,版本信息如下:
$ lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.4.1708 (Core)
Release: 7.4.1708
Codename: Core
⑵ 如何查看程序被哪个版本编译器编译的linux-gcc
那是不可能的,除非你加入了调试信息,也就是编译的时候加入了-g参数,然后用gdb调试就可以显示。最大程度上查看一个elf文件信息。
{
readelf -Wa a.out | head
readelf -wi a.out
readelf -p .comment a.out
objmp -s --section .comment audioplayer
}
如下:
[root@localhost rootfs]# readelf -Wa bin/gzip
复制代码
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: ARM
Version: 0x1
Entry point address: 0xa080
Start of program headers: 52 (bytes into file)
Start of section headers: 1975444 (bytes into file)
Flags: 0x5000002, has entry point, Version5 EABI
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 6
Size of section headers: 40 (bytes)
Number of section headers: 25
Section header string table index: 24
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .note.ABI-tag NOTE 000080f4 0000f4 000020 00 A 0 0 4
[ 2] .init PROGBITS 00008114 000114 00000c 00 AX 0 0 4
[ 3] .text PROGBITS 00008120 000120 17fcfc 00 AX 0 0 16
[ 4] __libc_freeres_fn PROGBITS 00187e1c 17fe1c 000f20 00 AX 0 0 4
[ 5] __libc_thread_fre PROGBITS 00188d3c 180d3c 0000e4 00 AX 0 0 4
[ 6] .fini PROGBITS 00188e20 180e20 000008 00 AX 0 0 4
[ 7] .rodata PROGBITS 00188e28 180e28 058147 00 A 0 0 8
[ 8] __libc_subfreeres PROGBITS 001e0f70 1d8f70 00005c 00 A 0 0 4
[ 9] __libc_atexit PROGBITS 001e0fcc 1d8fcc 000004 00 A 0 0 4
[10] __libc_thread_sub PROGBITS 001e0fd0 1d8fd0 000008 00 A 0 0 4
[11] .ARM.extab PROGBITS 001e0fd8 1d8fd8 001b04 00 A 0 0 4
[12] .ARM.exidx ARM_EXIDX 001e2adc 1daadc 006ea8 00 AL 3 0 4
[13] .tdata PROGBITS 001f1984 1e1984 000018 00 WAT 0 0 4
[14] .tbss NOBITS 001f199c 1e199c 000034 00 WAT 0 0 4
[15] .init_array INIT_ARRAY 001f199c 1e199c 000004 00 WA 0 0 4
[16] .fini_array FINI_ARRAY 001f19a0 1e19a0 000008 00 WA 0 0 4
[17] .jcr PROGBITS 001f19a8 1e19a8 000004 00 WA 0 0 4
[18] .data.rel.ro PROGBITS 001f19ac 1e19ac 00002c 00 WA 0 0 4
[19] .got PROGBITS 001f19d8 1e19d8 00007c 04 WA 0 0 4
[20] .data PROGBITS 001f1a58 1e1a58 0008f7 00 WA 0 0 8
[21] .bss NOBITS 001f2350 1e234f 004828 00 WA 0 0 8
[22] __libc_freeres_pt NOBITS 001f6b78 1e234f 00003c 00 WA 0 0 4
[23] .ARM.attributes ARM_ATTRIBUTES 00000000 1e234f 00002b 00 0 0 1
[24] .shstrtab STRTAB 00000000 1e237a 000118 00 0 0 1
Section to Segment mapping:
Segment Sections...
00 .ARM.exidx
01 .note.ABI-tag .init .text __libc_freeres_fn __libc_thread_freeres_fn .fini .rodata __libc_subfreeres __libc_atexit __libc_thread_subfreeres .ARM.extab .ARM.exidx
02 .tdata .init_array .fini_array .jcr .data.rel.ro .got .data .bss __libc_freeres_ptrs
03 .note.ABI-tag
04 .tdata .tbss
Attribute Section: aeabi
File Attributes
Tag_CPU_name: "5TE"
Tag_CPU_arch: v5TE
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_denormal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align8_needed: Yes
Tag_ABI_align8_preserved: Yes, except leaf SP
Tag_ABI_enum_size: int
Tag_unknown_44: 1 (0x1)
复制代码
How to retrieve the GCC version used to compile a given ELF executable? http://stackoverflow.com/questions/2387040/how-to-retrieve-the-gcc-version-used-to-compile-a-given-elf-executable
QUES: I'd like to retrieve the GCC version used to compile a given executable. I tried readelf but didn't get the information. Any thoughts?
ANS: To complete what others have said: it's not stored in the object (or exe) file, unless you compile with debugging information! (option -g). If you compile with debug info, you can get it back with readelf:
复制代码
[root@localhost test]# gcc a.c
[root@localhost test]# readelf -wi a.out
[root@localhost test]# gcc a.c -g
[root@localhost test]# readelf -wi a.out
The section .debug_info contains:
Compilation Unit @ offset 0x0:
Length: 135
Version: 2
Abbrev Offset: 0
Pointer Size: 8
<0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
DW_AT_stmt_list : 0
DW_AT_high_pc : 0x400453
DW_AT_low_pc : 0x400448
DW_AT_procer : GNU C 4.1.2 20080704 (Red Hat 4.1.2-55)
DW_AT_language : 1 (ANSI C)
DW_AT_name : a.c
DW_AT_comp_dir : /work/farsight/test
<1><61>: Abbrev Number: 2 (DW_TAG_subprogram)
DW_AT_external : 1
DW_AT_name : main
DW_AT_decl_file : 1
DW_AT_decl_line : 4
DW_AT_prototyped : 1
DW_AT_type : <83>
DW_AT_low_pc : 0x400448
DW_AT_high_pc : 0x400453
DW_AT_frame_base : 0 (location list)
<1><83>: Abbrev Number: 3 (DW_TAG_base_type)
DW_AT_name : int
DW_AT_byte_size : 4
DW_AT_encoding : 5 (signed)
复制代码
ANS2:
⑶ 如何查看 linux 内核源代码
Linux的内核源代码可以从很多途径得到。一般来讲,在安装的linux系统下,/usr/src/linux目录下的东西就是内核源代码。
对于源代码的阅读,要想比较顺利,事先最好对源代码的知识背景有一定的了解。对于linux内核源代码来讲,我认为,基本要求是:1、操作系统的基本知识;2、对C语言比较熟悉,最好要有汇编语言的知识和GNU C对标准C的扩展的知识的了解。另外在阅读之前,还应该知道Linux内核源代码的整体分布情况。我们知道现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序、网络等组成。看一下Linux内核源代码就可看出,各个目录大致对应了这些方面。Linux内核源代码的组成如下(假设相对于linux目录):
arch 这个子目录包含了此核心源代码所支持的硬件体系结构相关的核心代码。如对于X86平台就是i386。
include 这个目录包括了核心的大多数include文件。另外对于每种支持的体系结构分别有一个子目录。
init 此目录包含核心启动代码。
mm 此目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下,如对应于X86的就是arch/i386/mm/fault.c 。
drivers 系统中所有的设备驱动都位于此目录中。它又进一步划分成几类设备驱动,每一种也有对应的子目录,如声卡的驱动对应于drivers/sound。
ipc 此目录包含了核心的进程间通讯代码。
moles 此目录包含已建好可动态加载的模块。
fs Linux支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext2文件系统对应的就是ext2子目录。
kernel 主要核心代码。同时与处理器结构相关代码都放在arch/*/kernel目录下。
net 核心的网络部分代码。里面的每个子目录对应于网络的一个方面。
lib 此目录包含了核心的库代码。与处理器结构相关库代码被放在arch/*/lib/目录下。
scripts此目录包含用于配置核心的脚本文件。
Documentation 此目录是一些文档,起参考作用。
俗话说:“工欲善其事,必先利其器”。 阅读象Linux核心代码这样的复杂程序令人望而生畏。它象一个越滚越大的雪球,阅读核心某个部分经常要用到好几个其他的相关文件,不久你将会忘记你原来在干什么。所以没有一个好的工具是不行的。由于大部分爱好者对于Window平台比较熟悉,并且还是常用Window系列平台,所以在此我介绍一个Window下的一个工具软件:Source Insight。这是一个有30天免费期的软件,可以从www.sourcedyn.com下载。安装非常简单,和别的安装一样,双击安装文件名,然后按提示进行就可以了。安装完成后,就可启动该程序。这个软件使用起来非常简单,是一个阅读源代码的好工具。它的使用简单介绍如下:先选择Project菜单下的new,新建一个工程,输入工程名,接着要求你把欲读的源代码加入(可以整个目录加)后,该软件就分析你所加的源代码。分析完后,就可以进行阅读了。对于打开的阅读文件,如果想看某一变量的定义,先把光标定位于该变量,然后点击工具条上的相应选项,该变量的定义就显示出来。对于函数的定义与实现也可以同样操作。别的功能在这里就不说了,有兴趣的朋友可以装一个Source Insight,那样你阅读源代码的效率会有很大提高的。怎么样,试试吧!
⑷ 用C程序查看linux/win操作系统信息
获取 Windows 操作系统版本信息的 C 程序 [zt]
From:[url]http://kevin2296.blog.163.com/article/-aBzn-rfC7hw.html[/url]
[php]
// OSinfo.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include "winsock.h"
#include <string>
#include <iostream>
using std::cout;using std::string;using std::iostream;
using std::endl;using std::ios;using std::fstream;
using std::ofstream;using std::cin;
#pragma comment( lib, "Ws2_32.lib" )
#define MAX_VALUE_NAME 256
//char osinfo[MAX_PATH][MAX_PATH];
char patchname[MAX_VALUE_NAME];
//全局变量
char *LocalIP=""; //定义IP地址变量
//获取本机ip
bool GetLocalIp()
{
WSADATA wsaData;
char name[255];//定义用于存放获得的主机名的变量
PHOSTENT hostinfo;
//调用MAKEWORD()获得Winsock版本的正确值,用于加载Winsock库
if ( WSAStartup( MAKEWORD(2,2), &wsaData ) == 0 )
{
//现在是加载Winsock库,如果WSAStartup()函数返回值为0,说明加载成功,程序可以继续
if( gethostname ( name, sizeof(name)) == 0)
{
//如果成功地将本地主机名存放入由name参数指定的缓冲区中
if((hostinfo = gethostbyname(name)) != NULL)
{
//这是获取主机名,如果获得主机名成功的话,将返回一个指针,指向hostinfo,hostinfo
//为PHOSTENT型的变量,下面即将用到这个结构体
LocalIP = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
//调用inet_ntoa()函数,将hostinfo结构变量中的h_addr_list转化为标准的点分表示的IP
//地址(如192.168.0.1)
// printf("the ip is:%s\n",LocalIP);//输出IP地址
}
}
WSACleanup( );//卸载Winsock库,并释放所有资源
}
return TRUE;
}
//显示系统版本
bool DisplaySystemVesion(FILE *fp)
{
OSVERSIONINFOEX osvi;
BOOL bOsVersionInfoEx;
//利用OSVERSIONINFOEX结构调用GetVersionEx()函数
//如果调用失败,可尝试使用OSVERSIONINFO结构
ZeroMemory(&osvi,sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);
if(!(bOsVersionInfoEx=GetVersionEx((OSVERSIONINFO*)&osvi)))
{
//
osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
if(!GetVersionEx((OSVERSIONINFO*)&osvi))
return FALSE;
}
switch(osvi.dwPlatformId)
{
case VER_PLATFORM_WIN32_NT:
//get os information
if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2 )
{
printf("Microsoft Windows Server 2003 family ");
//fprintf( fp, "Microsoft Windows Server 2003 family ");
fprintf( fp, "WindowsServer2003");
// strcpy(osinfo[0],"Microsoft Windows Server 2003 family ");
}
if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 )
{
printf("Microsoft Windows XP ");
//fprintf( fp, "Microsoft Windows XP ");
fprintf( fp, "WindowsXP");
// strcpy(osinfo[0],"Microsoft Windows XP ");
}
if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )
{
printf("Microsoft Windows 2000 ");
//fprintf( fp, "Microsoft Windows 2000 ");
fprintf( fp, "Windows2000");
// strcpy(osinfo[0],"Microsoft Windows 2000 ");
}
if ( osvi.dwMajorVersion <= 4 )
{
printf("Microsoft Windows NT ");
//fprintf( fp, "Microsoft Windows NT ");
fprintf( fp, "WindowsNT");
// strcpy(osinfo[0],"Microsoft Windows NT ");
}
//
if(bOsVersionInfoEx)
{
if(osvi.wProctType==VER_NT_WORKSTATION)
{
printf("Professional ");
// fprintf(fp,"Professional ");
}
if(osvi.wProctType==VER_NT_SERVER)
{
printf("Server ");
// fprintf(fp,"Server ");
}
//printf("\n");
fprintf(fp,"\n");
}
else
{
HKEY hKey;
char szProctType[80];
DWORD dwBufLen;
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\ProctOptions",0,KEY_QUERY_VALUE,&hKey);
RegQueryValueEx(hKey,"ProctType",NULL,NULL,(LPBYTE)szProctType,&dwBufLen);
RegCloseKey(hKey);
if(lstrcmpi("WINNT",szProctType)==0)
{
printf("Workstation ");
// fprintf(fp,"Workstation ");
}
if(lstrcmpi("SERVERNT",szProctType)==0)
{
printf("Server ");
// fprintf(fp,"Server ");
}
//printf("\n");
fprintf(fp,"\n");
}
// Display service pack (if any) and build number.
if( osvi.dwMajorVersion == 4 &&
lstrcmpi( osvi.szCSDVersion, "Service Pack 6" ) == 0 )
{
HKEY hKey;
LONG lRet;
// Test for SP6 versus SP6a.
lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Hotfix\\Q246009",
0, KEY_QUERY_VALUE, &hKey );
if( lRet == ERROR_SUCCESS )
{
printf( "Service Pack 6a (Build %d)\n", osvi.dwBuildNumber & 0xFFFF );
// fprintf( fp,"Service Pack 6a (Build %d)\n", osvi.dwBuildNumber & 0xFFFF );
// fprintf( fp,"Service Pack 6a\n" );
fprintf( fp,"6a\n" );
}
else // Windows NT 4.0 prior to SP6a
{
printf( "%s (Build %d)",osvi.szCSDVersion,osvi.dwBuildNumber & 0xFFFF);
/* printf( "%s (Build %d)\n",
osvi.szCSDVersion,
osvi.dwBuildNumber & 0xFFFF);
*/
// fprintf( fp,"%s (Build %d)\n",
// osvi.szCSDVersion,
// osvi.dwBuildNumber & 0xFFFF);
// fprintf( fp,"%s\n",osvi.szCSDVersion);
fprintf( fp,"%s\n",osvi.szCSDVersion+13); //去掉"Service Pack "共13个字节,只保留最后的号
}
RegCloseKey( hKey );
}
else // Windows NT 3.51 and earlier or Windows 2000 and later
{
printf( "%s (Build %d)",osvi.szCSDVersion,osvi.dwBuildNumber & 0xFFFF);
/*printf( "%s (Build %d)\n",
osvi.szCSDVersion,
osvi.dwBuildNumber & 0xFFFF);
*/
// fprintf( fp,"%s (Build %d)\n",
// osvi.szCSDVersion,
// osvi.dwBuildNumber & 0xFFFF);
// fprintf( fp,"%s\n",osvi.szCSDVersion);
fprintf( fp,"%s\n",osvi.szCSDVersion+13); //去掉"Service Pack "共13个字节,只保留最后的号
}
break;
case VER_PLATFORM_WIN32_WINDOWS:
if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)
{
printf("Microsoft Windows 95 ");
fprintf(fp,"Microsoft Windows 95 ");
if ( osvi.szCSDVersion[1] == 'C' || osvi.szCSDVersion[1] == 'B' )
{
printf("OSR2");
fprintf(fp,"OSR2");
// strcat(osinfo[0], "OSR2" );
}
printf("\n");
fprintf(fp,"\n");
}
if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
{
printf("Microsoft Windows 98 ");
fprintf(fp,"Microsoft Windows 98 ");
if ( osvi.szCSDVersion[1] == 'A' )
{
printf("SE");
fprintf(fp,"SE");
}
printf("\n");
fprintf(fp,"\n");
}
if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
{
printf("Microsoft Windows Millennium Edition\n");
fprintf(fp,"Microsoft Windows Millennium Edition\n");
}
break;
case VER_PLATFORM_WIN32s:
printf(" Microsoft Win32s\n");
fprintf(fp," Microsoft Win32s\n");
break;
}
return TRUE;
}
void DisplaySetupedPatch(FILE *fp)
{
HKEY hKey;
// LONG lRet;
// char Buf[80];
// char lpBuf[80];
DWORD i;
DWORD retCode;
// DWORD j;
// DWORD retValue;
DWORD dwxValueName=MAX_VALUE_NAME;
LPCTSTR path="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Hotfix";
LONG return0=RegOpenKeyEx(HKEY_LOCAL_MACHINE,path,0,KEY_READ,&hKey);
if(return0!=ERROR_SUCCESS)
{
printf("错误:无法打开有关的键!");
}
for(i=1,retCode=ERROR_SUCCESS;retCode==ERROR_SUCCESS;i++)
{
retCode=RegEnumKey(hKey,i,patchname,MAX_PATH);
if(retCode==ERROR_SUCCESS)
{
printf("%s\n",patchname);
fprintf(fp,"%s\n",patchname);
}
}
}
void main()
{
//写入文件
FILE *fp;
GetLocalIp();
const char SaveReciveFilePath[]="f:\\";
string abPath(SaveReciveFilePath);
char Filename[512]="";
strcpy(Filename,LocalIP); //拷贝字符串
strcat(Filename,".txt"); //连接字符串
abPath += Filename;
fp=fopen(abPath.c_str(),"w");
while(fp==NULL);
// printf("the LocalIP is:%s\n",LocalIP);//输出IP地址
printf("本机IP地址:%s\n",LocalIP);//输出IP地址
// fprintf(fp,"本机IP:%s\n",LocalIP);
// fprintf(fp,"%s\n",LocalIP);
bool a=FALSE;
printf("本机操作系统版本是:");
// fprintf(fp,"本机操作系统版本是:");
//操作系统版本信息
while (a!=TRUE)
{
a=DisplaySystemVesion(fp);
}
//操作系统语言信息
printf("语言:");
// fprintf(fp,"语言:");
/* WORD wLangPID = PRIMARYLANGID( GetSystemDefaultLangID() );
if( LANG_CHINESE == wLangPID )
{
printf("CHS\n");//中文
fprintf(fp,"CHN\n");
}
else
{
printf("ENG\n"); //英文
fprintf(fp,"ENG\n");
}
if( NULL == wLangPID )
{
printf( "Failure!\n" );
}
*/
int LanguageID=GetSystemDefaultLangID(); //返回操作系统语言的ID号
switch(LanguageID)
{
case 0x0404:
printf("CHT\n");//Chinese Taiwan
fprintf(fp,"CHT\n");
break;
case 0x0804:
printf("CHS\n");//Chinese PRC
fprintf(fp,"CHS\n");
break;
case 0x0c04:
printf("ZHH\n");//Chinese Hong Kong SAR
fprintf(fp,"ZHH\n");
break;
case 0x1004:
printf("ZHH\n");//Chinese Singapore
fprintf(fp,"ZHH\n");
break;
case 0x1404:
printf("ZHM\n");//Chinese Macau SAR
fprintf(fp,"ZHM\n");
break;
case 0x0809:
printf("ENG\n");//English United Kingdom
fprintf(fp,"ENG\n");
break;
case 0x0409:
printf("USA\n");//English United States
fprintf(fp,"USA\n");
break;
default:
printf("Default\n");
fprintf(fp,"Default\n");
break;
}
// printf("%d\n",id);
//操作系统已安装补丁信息
printf("系统已经安装的升级补丁有:\n");
// fprintf(fp,"系统已经安装的升级补丁有:\n");
DisplaySetupedPatch(fp);
fclose(fp);
}
⑸ 如何查看Linux操作系统版本
二。查看linux版本:
1) 登录到服务器执行 lsb_release -a ,即可列出所有版本信息,例如:
[root@SOR_SYS ~]# lsb_release -a
LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: RedHatEnterpriseAS
Description: Red Hat Enterprise Linux AS release 4 (Nahant Update 4)
Release: 4
Codename: NahantUpdate4
[root@SOR_SYS ~]#
注:这个命令适用于所有的linux,包括Redhat、SuSE、Debian等发行版。
2) 登录到linux执行cat /etc/issue,例如如下:
[root@SOR_SYS ~]# cat /etc/issue
Red Hat Enterprise Linux Server release 5.6 (Tikanga)
Kernel \r on an \m
[root@SOR_SYS ~]#
3) 登录到linux执行cat /etc/redhat-release ,例如如下:
[root@SOR_SYS ~]# cat /etc/redhat-release
Red Hat Enterprise Linux AS release 4 (Nahant Update 4)
[root@SOR_SYS ~]#
注:这种方式下可以直接看到具体的版本号,比如 AS4 Update 1
4)登录到linux执行rpm -q redhat-release ,例如如下:
[root@SOR_SYS ~]# rpm -q redhat-release
redhat-release-5Server-5.6.0.3
[root@SOR_SYS ~]#
注:这种方式下可看到一个所谓的release号,比如上边的例子是5
这个release号和实际的版本之间存在一定的对应关系,如下:
redhat-release-3AS-1 -> Redhat Enterprise Linux AS 3
redhat-release-3AS-7.4 -> Redhat Enterprise Linux AS 3 Update 4
redhat-release-4AS-2 -> Redhat Enterprise Linux AS 4
redhat-release-4AS-2.4 -> Redhat Enterprise Linux AS 4 Update 1
redhat-release-4AS-3 -> Redhat Enterprise Linux AS 4 Update 2
redhat-release-4AS-4.1 -> Redhat Enterprise Linux AS 4 Update 3
redhat-release-4AS-5.5 -> Redhat Enterprise Linux AS 4 Update 4
另:第3)、4)两种方法只对Redhat Linux有效
5) [root@SOR_SYS ~]# file /bin/bash
/bin/bash: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
[root@SOR_SYS ~]#
6) [root@SOR_SYS ~]# file /bin/cat
/bin/cat: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
[root@SOR_SYS ~]#
⑹ 在Qt C/C++中怎样查询Linux内核版本号
查询Linux内核版本号可以调用uname函数,uname函数的函数原型是这样的:
int uname(struct utsname *name);
uname函数在调用时需要向它传递一个utsname结构体指针(或地址),uname函数会写入name参数指向的utsname结构体,Linux的内核版本号就保存在utsname结构体的release成员里面,代码就像下面这样:
struct utsname uts;
if(uname(&uts) >= 0) {
printf("The version is %s\n", uts.release);
}
注意,使用uname函数需要包含sys/utsname.h头文件:
#include <sys/utsname.h>
⑺ 这是什么版本的linux
Centos 6.4版本,基于RHEL6.4版本编译发行的,64位,用的是Linux 2.6.32内核。
⑻ 如何查看linux版本
需要准备的材料分别是:电脑、linux连接工具。
1、首先连接上linux主机,进入等待输入指令的linux命令行状态。
⑼ 如何查看linux的cmake编译器的最低版本
可以使用cmake --version 查看
如果输出 cmake的版本号说明已经正确安装了cmake
如果提示没有cmake这个命令,说明没有正确安装
下面给出安装cmake的步骤
可以直接在线安装:apt-get install cmake
2. 离线安装
cmake下载地址:http://www.cmake.org/files/v2.8/cmake-2.8.4-Linux-i386.tar.gz
下载之后
1.解压
root@zsh-linux:/opt#tar -zxvf cmake-2.8.4.tar.gz
2.然后 cd 到cmake-2.8.4目录下 安装
root@zsh-linux:/opt/cmake-2.8.4# ./bootstrap
root@zsh-linux:/opt/cmake-2.8.4# make
root@zsh-linux:/opt/cmake-2.8.4# make install
安装完毕后查看是否安装成功:
root@zsh-linux:/opt/cmake-2.8.4# cmake --version
cmake version 2.8.4
⑽ Linux下怎么获得c库版本怎么动态的获得c编译器版本
外部调用 gcc -v 抓取最后一行吧
libc库可以直接外部运行 /lib/libc.so.6,或者用 /usr/include/gnu/libc-version.h 里的两个函数找