Làm cách nào để biết tệp nào là một phần của tệp .a của tôi? Tôi nên sử dụng lệnh nào?Cách liệt kê các tệp trong một tệp .a
Trả lời
Nếu bạn không bỏ biểu tượng, bạn có thể sử dụng nm
để xem tên của tệp đối tượng (.o
).
$ nm foo.a
foo.a(objectFile1.o):
0000000000000000 T _function1
foo.a(objectFile2.o):
0000000000000000 T _function2
Kết quả này sẽ khác nhau trên các hệ điều hành khác nhau. Ví dụ, đây là sản phẩm của những biểu tượng trong libz.a
trên một hệ thống Ubuntu:
$ nm libz.a | grep ".o:"
adler32.o:
compress.o:
crc32.o:
gzio.o:
uncompr.o:
deflate.o:
trees.o:
zutil.o:
inflate.o:
infback.o:
inftrees.o:
inffast.o:
Mỗi phòng trong số trên 12 .o file là đơn vị dịch trong mã gốc, biên soạn với -c
tùy chọn để gcc. Tôi đã sử dụng grep
để bỏ qua vô số các ký hiệu được xác định và tham chiếu trong từng tệp đối tượng. Sau khi biên dịch, các tệp đối tượng này sau đó được kết hợp thành một thư viện tĩnh với ar
.
ar
cũng có thể trích xuất các tệp đối tượng. Cùng libz.a
:
$ ar xv libz.a
x - adler32.o
x - compress.o
x - crc32.o
x - gzio.o
x - uncompr.o
x - deflate.o
x - trees.o
x - zutil.o
x - inflate.o
x - infback.o
x - inftrees.o
x - inffast.o
Tùy chọn x
là chiết xuất và v
là dài dòng, mà in tên của các tập tin đối tượng vì nó được chiết xuất.
Điều này làm việc với lệnh dưới đây: nm <> | grep ".o" | sed "s /. (// g" | sed "s /). // g" | uniq
Tôi nghĩ rằng nó sẽ đơn giản hơn để sử dụng ar
cho những gì nó có nghĩa là (thao tác tài liệu lưu trữ)
ar t foo.a
Từ trang người đàn ông:
-t Liệt kê các tập tin định theo thứ tự mà chúng xuất hiện trong kho lưu trữ, mỗi tệp trên một dòng riêng biệt. Nếu không có tệp nào được chỉ định, tất cả các tệp trong lưu trữ được liệt kê.
man 1 ar
để biết thêm thông tin.
- 1. Chỉ liệt kê các tệp trong một thư mục?
- 2. Cách liệt kê các tệp trong thư mục hiện tại?
- 3. Cách liệt kê các tệp trong thư mục tĩnh?
- 4. Cách liệt kê các tệp trong thư mục android?
- 5. git: liệt kê các tệp mới chỉ
- 6. Cách liệt kê tệp bằng lệnh dos?
- 7. Liệt kê các tệp trong repo git cục bộ?
- 8. Liệt kê tất cả các tệp trong gói homebrew
- 9. Liệt kê tất cả các tệp trong một thư mục - đường dẫn đầy đủ của tệp
- 10. Liệt kê các tệp không khớp với mẫu?
- 11. Cách liệt kê các tệp của thư mục trong một máy chủ khác bằng ssh2
- 12. Làm cách nào để liệt kê các biểu tượng trong một tệp .so
- 13. Tìm tất cả các tệp trong một thư mục bằng cách liệt kê
- 14. Liệt kê các tệp trong một thư mục bằng cách sử dụng html
- 15. Liệt kê tất cả các xử lý tệp đang mở?
- 16. gdb: howto liệt kê các tệp đang mở
- 17. KCFinder 'Bạn không có quyền liệt kê các tệp.'
- 18. Cách liệt kê các tab trong vim?
- 19. Liệt kê các tệp trong thư mục của tệp JAR hiện tại
- 20. Tập lệnh liệt kê tất cả các ký tự riêng biệt trong một tệp văn bản
- 21. Liệt kê nội dung tệp thư mục trong mẫu Django
- 22. Liệt kê các tệp trong một thư mục khớp với mẫu trong Java
- 23. Làm cách nào để liệt kê một tên tệp trên mỗi dòng đầu ra trong Linux?
- 24. Cách liệt kê các tệp văn bản trong thư mục đã chọn trong hộp danh sách?
- 25. Liệt kê các tệp trong một thư mục được chỉ định bằng PL/SQL
- 26. Làm cách nào để liệt kê các tệp trong thư mục bằng bash?
- 27. Liệt kê các tệp trong một thư mục chỉ sử dụng javascript
- 28. Làm cách nào để liệt kê các tệp trong thư mục có Chất lỏng?
- 29. trên iOS/iPhone: "Quá nhiều tệp mở": cần liệt kê các tệp đang mở (như lsof)
- 30. Liệt kê tất cả các tệp và thư mục trong thư mục + thư mục con
Danh sách này xuống tất cả các đối tượng được sử dụng bên trong tệp. Lệnh in chỉ là các tệp bên trong .a. Ví dụ, các tệp .o bên trong .a. – Abhinav
Đó chính xác là những gì 'nm' nói với bạn. Ví dụ, trên máy Ubuntu của tôi: 'nm /usr/lib/libz.a | grep ".o:" 'trả về với 12 tệp' .'' bao gồm 'libz.a'. Ý bạn là vậy đúng không? – greg
Có, bạn đã đúng. Nhưng sử dụng nm my.a | grep ".o:" trả về phương thức tôi gọi một số tệp .o bên trong nhưng không liệt kê tất cả các tệp .o. Tôi có làm gì sai ở đây không? – Abhinav