2011-11-25 987 views
10

Autoconf/Automake đang gặp khó khăn để hỗ trợ các trình biên dịch C cổ mà không hiểu việc sử dụng đồng thời các tùy chọn -c-o (tạo một tệp đối tượng với tên này) . Có AM_PROG_CC_C_O và tập lệnh trình bao bọc đặc biệt và hướng dẫn sử dụng Tự động warns you to use them nếu bạn muốn sử dụng chế độ subdir-objects.Trình biên dịch Unix C++ không hiểu -c -o

không phải là an AM_PROG_CXX_C_O. Nó không phải là khó khăn để sửa đổi AM_PROG_CC_C_O để kiểm tra trình biên dịch C++ thay vào đó, nhưng tôi tự hỏi nếu nó là cần thiết. Đã bao giờ có trình biên dịch Unix C++ (Cfront, có thể?) Không hỗ trợ sử dụng đồng thời -c-o? Đến đây, các trình biên dịch C không hỗ trợ nó như thế nào - có bao giờ trình biên dịch hỗ trợ C89 với vấn đề này không?

+0

+1: Chắc chắn có _were_ trình biên dịch (C) như vậy. Cho dù có bất kỳ trình biên dịch (hỗ trợ) hiện tại nào không có cơ sở đó là một câu hỏi quan trọng. Cho dù vẫn còn các phiên bản cũ của trình biên dịch được sử dụng thì khó đánh giá hơn; phần mềm có khuynh hướng được sử dụng lâu sau ngày 'tốt nhất trước ngày kết thúc' của nó. –

+3

Vấn đề với "-c -o" là -c có khả năng làm cho trình biên dịch tạo nhiều kết quả đầu ra, tại thời điểm đó tùy chọn -o trở thành vô nghĩa. –

+0

@SimonRichter Đó là một điểm thú vị, tuy nhiên, trình biên dịch cuối cùng mà * tôi * cá nhân biết về điều đó không làm điều gì đó hợp lý với '-c -o' là K & R chỉ của Solaris'/bin/cc', mà isn ' t thậm chí một cái gì đó bạn có thể bắt đầu với và bootstrap cho mình một trình biên dịch mới hơn, nữa. – zwol

Trả lời

1

Có các trình biên dịch, chủ yếu là các trình biên dịch được nhắm mục tiêu trong ngành được nhúng, nơi bạn phải biên dịch và liên kết theo cách thủ công. Trong những trường hợp đó, tùy chọn -c không có ý nghĩa.

Cho rằng Linux ngày càng được sử dụng trong các hệ thống nhúng, bạn chắc chắn nên tính đến những điều đó.

+0

Tôi không biết ý bạn là gì "biên dịch và liên kết thủ công". Bạn có thể chỉ cho tôi một ví dụ cụ thể về trình biên dịch với thuộc tính mà bạn đang nghĩ tới, lý tưởng cho tài liệu của nó không? – zwol

+0

Ngoài ra, cho phép tôi nhấn mạnh rằng đây là * không * một câu hỏi dành riêng cho Linux mà tôi đang hỏi ở đây. Tôi xem nó như là một câu hỏi quan tâm lịch sử. – zwol

+0

Bởi "bằng tay" tôi có nghĩa là bạn phát hành một lệnh để biên dịch vào một tệp đối tượng và một lệnh khác để thực hiện liên kết. Không có trình bao bọc nào biên dịch và liên kết, do đó không có điểm nào trong việc có tùy chọn '-c'. Một ví dụ cụ thể là các trình biên dịch từ 'IAR Systems', là một phần của 'IAR Embedded Workbench'. Tôi không chắc sách hướng dẫn có trực tuyến hay không, nhưng bạn có thể tải xuống phiên bản Kickstart được gọi là để lấy chúng. – Lindydancer