Tìm các phiên bản thư viện một thư viện đã được liên kết với


8

Tôi có một thư viện được biên dịch trên một máy Ubuntu không xác định, và tôi muốn xác định phiên bản Ubuntu mà máy đó có vào thời gian biên dịch.

Ý tưởng của tôi là thử và tìm các phiên bản của các thư viện khác nhau được sử dụng (ví dụ như kernel), biết rằng các phiên bản này đã thay đổi với các bản phát hành khác nhau. Tôi đã thử sử dụng nmldd, nhưng dường như tôi không thể tìm thấy bất kỳ thông tin liên quan nào.

Bất kỳ đề xuất?

Câu trả lời:


5

Có lẽ

 readelf -a 

Nó hiển thị thông tin về các tập tin ELF. Nếu đối tượng bạn đang nghiên cứu vẫn chứa phần bình luận, bạn có thể thử trích xuất nó bằng cách

 readelf -p .comment yourfile

Ví dụ

$ cat test.c
int main () {
  return 0;
}
$ gcc test.c
$ readelf -p .comment a.out

String dump of section '.comment':
  [     0]  GCC: (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

objdump có thể cung cấp thông tin tương tự.

Nếu phần bình luận bị tước, bạn có thể thử đọc thông tin phiên bản biểu tượng thời gian chạy GCC từ readelf -alệnh nếu đó là thư viện được biên dịch c ++. Lưu ý, đó là phiên bản của các ký hiệu được cung cấp cho trình biên dịch và không nhất thiết phải là phiên bản của trình biên dịch. Tôi không biết làm thế nào hữu ích để theo dõi phiên bản Ubuntu.


Không .. Nó không có vẻ hứa hẹn: OS / ABI: UNIX - Hệ thống V ABI Phiên bản: 0
nbubis

Bạn có thể giải thích làm thế nào bạn đi về làm điều này? Iv'e đã ​​trải qua đầu ra sẵn sàng và không tìm thấy bất cứ điều gì hữu ích. Cảm ơn!
nbubis

Tôi đã chỉnh sửa câu trả lời để chứa một ví dụ.
Jari Laamanen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.