Tôi có một vài tệp .c và một tệp đối tượng .a. Tôi nên sử dụng lệnh nào với gcc để biên dịch chúng thành một tệp exe? Nếu chúng ta sử dụng một makefile, nó sẽ trông như thế nào?lệnh để biên dịch các tệp c có tệp .a
Trả lời
Tệp .a là thư viện, đã được biên dịch. Bạn biên dịch tệp .c của bạn thành .o, sau đó bạn sử dụng trình liên kết để liên kết .o của bạn với .a để tạo tệp thực thi.
Đối với trường hợp đơn giản, bạn có lẽ có thể làm điều này:
gcc -o maybe.exe useful.a something.c
Makefiles cho các dự án không tầm thường thường đầu tiên gọi gcc để biên dịch mỗi file .c đến một đối tượng .o.
gcc -c something.c
Sau đó, họ gọi trình liên kết (những ngày này thường sử dụng gcc làm trình bao bọc) với danh sách tệp .o và .a để liên kết thành tệp thực thi.
gcc -o maybe.exe useful.a something.o
Cũng lưu ý rằng cho các thư viện cài đặt nhất, đó là điển hình không xác định rõ ràng file .a nhưng thay vì nói -lhandy đó sẽ là viết tắt của "cố gắng tìm một cái gì đó gọi là libhandy.a trong cấu hình (hoặc chỉ định với -L) thư mục tìm kiếm"
Nhờ ẩn danh để bắt lỗi trong việc tạo tập tin đối tượng –
*.a
là một thư viện tĩnh và không năng động (*.dll
trong các cửa sổ và *.so
trong linux)
gcc -L<here comes the library path> -l<library name>
ví dụ cho các tập tin bạn có libname.a trong hiện tại đường dẫn mà bạn nên sử dụng:
gcc *.c -L. -lname -o myprogram.o
từ man (đưa người đàn ông gcc trong command prompt shell)
Bạn có thể kết hợp tùy chọn và lập luận khác. Đối với hầu hết các phần, thứ tự bạn sử dụng không quan trọng. Đặt hàng không thành vấn đề khi bạn sử dụng một số tùy chọn cùng loại; ví dụ: nếu bạn chỉ định -L nhiều lần, các thư mục sẽ được tìm kiếm theo thứ tự được chỉ định. Ngoài ra, vị trí của tùy chọn -l là đáng kể.
- 1. Biên dịch C++ .lib chỉ với các tệp tiêu đề?
- 2. Plugin Eclipse để tự động biên dịch các tệp Sass
- 3. CMake có thể sử dụng g ++ để biên dịch các tệp C không?
- 4. Biên dịch tập lệnh R thành tệp .exe độc lập?
- 5. Biên dịch các tệp C trong dự án C++ không sử dụng tiêu đề biên dịch trước?
- 6. .o tệp vs .a tệp
- 7. Trình biên dịch dòng lệnh C++ (CL.EXE) Chuyển hướng tệp OBJ
- 8. Biên dịch nhiều tệp mục tiêu-C trên dòng lệnh với clang
- 9. Cách gộp tệp jar bằng tệp java và biên dịch trong dấu nhắc lệnh
- 10. Cách biên dịch tệp .c với OpenSSL bao gồm?
- 11. Lỗi tham chiếu khi biên dịch tệp C trong lời nhắc lệnh VS2010
- 12. Cách thức Biên dịch thư viện C thành tệp .Net?
- 13. Cách liệt kê các tệp trong một tệp .a
- 14. Có thể nhập tệp python đã biên dịch không?
- 15. Biên dịch tệp XeLaTeX tex với latexmk
- 16. Biên dịch lại các tệp mã byte OCaml
- 17. GCC có hỗ trợ các tệp lệnh
- 18. Biên dịch * .Rnw tệp với knitr - không có Rstudio
- 19. Tôi có cần biên dịch các tệp tiêu đề trong chương trình C không?
- 20. Mã C# có được biên dịch thành các tệp nhị phân gốc không?
- 21. Trình biên dịch C/C++ có tối ưu hóa trên các đơn vị biên dịch không?
- 22. Biên dịch một tệp nhị phân để liên kết OSX
- 23. Cách biên dịch tập lệnh python thành tệp nhị phân có thể thực thi
- 24. Có thể nhận GCC để biên dịch UTF-8 với các tệp nguồn BOM không?
- 25. Tôi có thể định cấu hình pydev để tự động biên dịch các tệp cython không?
- 26. Làm thế nào để biên dịch một tệp với maven?
- 27. Làm cách nào để biên dịch các tệp HTML thành tệp CHM?
- 28. Làm thế nào để biên dịch một tệp Xcode 4?
- 29. Nhận các tùy chọn trình biên dịch từ tệp thực thi đã biên dịch?
- 30. Cách mở tệp .a
Không trả lời câu hỏi về cách * cách thực hiện. Không nói "nó trông như thế nào". – mtahmed