Windows에서 EXE 및 DLL에는 최소한 다음 필드를 포함하여 버전 정보가 있습니다.
- 파일 버전
- 제품 버전
- 내부 이름
- 상품명
- 저작권
Linux 라이브러리 / 실행 파일에서 :
- 어떤 분야가 존재합니까?
- 그러한 정보를 보는 방법?
- 읽을 도구 / 라이브러리는 무엇입니까?
/sbin/ldconfig -p
Windows에서 EXE 및 DLL에는 최소한 다음 필드를 포함하여 버전 정보가 있습니다.
Linux 라이브러리 / 실행 파일에서 :
/sbin/ldconfig -p
답변:
버전 정보 는 ELF 파일 에 명시 적으로 저장되지 않습니다 . soname
여기에는 주요 버전이 포함 된 라이브러리 이름이 있습니다. 정식 버전은 일반적으로 라이브러리 파일 이름의 일부로 저장됩니다.
예를 들어 라이브러리가 libtest.so
있으면 일반적으로 다음을 갖습니다.
libtest.so.1.0.1
-정식 버전을 포함하는 라이브러리 파일 자체libtest.so.1
- libtest.so.1.0.1
와 동일한 이름을 가진에 대한 심볼릭 링크soname
libtest.so
- libtest.so.1
링크 에 사용되는 Symlink .라이브러리 파일 libtest.so.1.0.1
에는 SONAME
동적 섹션에서이 라이브러리가라고 하는 항목 이 있습니다 libtest.so.1
. 이 라이브러리에 대해 프로그램을 링크하면 링크 된 프로그램이 동적 섹션의 항목 soname
아래에 라이브러리의 라이브러리를 저장합니다 NEEDED
.
정확히 어떤 ELF 파일에 있는지 확인하려면 다음을 실행하십시오.
readelf -a -W elffile
여기서 elffile
실행 파일의 라이브러리 일 수 있습니다.
라이브러리 버전을 얻으려면 다음을 수행하십시오.
readelf -d /path/to/library.so |grep SONAME
AFAIK, 실행 파일에는 그러한 정보가 없습니다 (적어도 기본적으로는 아님).
또는 Rahul Patil이 작성한 것처럼 프로그램 자체 또는 패키징 시스템에 의존 할 수 있습니다.
당신은 ldconfig -v | grep libraryname
또한 옵션을 가지고 명령을 사용할 수 있습니다 command -V
또는binaryfile --version
예 :
test@ubuntukrb12:~# ls --version
ls (GNU coreutils) 8.13
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
또한 당신은 당신이 사용하는 배포판에 따라 yu 또는 적성을 사용할 수 있습니다.
RHEL5 / CENTOS5 / Fedora에서 사용할 수 yum info packagename
있거나 설치된 경우rpm --version packagename
[root@ldap1 ~]# yum info bind97
Loaded plugins: downloadonly, fastestmirror, security
Loading mirror speeds from cached hostfile
* base: mirrors.sin3.sg.voxel.net
* epel: mirror.imt-systems.com
* extras: mirrors.sin3.sg.voxel.net
* updates: mirrors.sin3.sg.voxel.net
Installed Packages
Name : bind97
Arch : i386
Epoch : 32
Version : 9.7.0
Release : 10.P2.el5_8.4
Size : 6.3 M
Repo : installed
Summary : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server
URL : http://www.isc.org/products/BIND/
License : ISC
Description: BIND (Berkeley Internet Name Domain) is an implementation of the DNS
: (Domain Name System) protocols. BIND includes a DNS server (named),
: which resolves host names to IP addresses; a resolver library
: (routines for applications to use when interfacing with DNS); and
: tools for verifying that the DNS server is operating properly.
우분투에서는 aptitude show pkgname
또는dpkg --version pkgname
root@ubuntukrb12:~# aptitude show bind9utils
Package: bind9utils
State: installed
Automatically installed: yes
Version: 1:9.8.1.dfsg.P1-4ubuntu0.4
Priority: optional
Section: net
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Uncompressed Size: 306 k
Depends: libbind9-80, libc6 (>= 2.14), libdns81, libisc83, libisccc80, libisccfg82
Conflicts: bind9utils
Replaces: bind9 (<= 1:9.5.0~b2-1), bind9 (<= 1:9.5.0~b2-1)
Description: Utilities for BIND
This package provides various utilities that are useful for maintaining a working BIND installation.
rpm
, 당신이 원하는 것 같아 rpm --query pkgname
버전 문자열을 나열 ( rpm --version
버전 인쇄합니다 rpm
자체를, 동일에 대한 사실 수 있습니다 dpkg
)
Redhat 기반 시스템의 경우 다음을 수행하십시오.
ldd [file you want to run] | > needed-packages
필요한 패키지 파일을 확인하고 라이브러리 파일 이름에 경로 이름이 없는지 확인하십시오. 제거하면 "/bin/lib/libx.so.1"이 "libx.so.1"로 변경됩니다.
라이브러리에 포함 된 패키지 찾기
yum -y provides [lib name]
또는 이것을 스크립트에 넣거나 cmd 행에서 실행하십시오.
for lib in `cat libs.txt`;
do
yum -y provides $lib | head -2 | grep " : " >> packages.list
done
다음 스크립트를 작성하거나 cmd 행에서 실행하십시오.
for package in `cat packages.list | awk '{ print $1 }'`;
do
yum -y install $package
done
완료, 프로그램을 실행하십시오. 실행할 때 GUI 오류가 발생하는 경우 그것들을 복사해서 그것들이 라이브러리 참조라면 그것들을위한 패키지를 찾아 같은 방법으로 설치하십시오.