Tôi có tệp nguồn mà tôi tiền xử lý bằng cách sử dụng các tùy chọn -E
và -P
(sử dụng GCC 4.1.2 cho nền tảng nhúng dựa trên vxWorks). Tất cả các tùy chọn khác đều giống như khi tôi biên dịch tệp. Các tùy chọn này là:Biên dịch các thay đổi tệp trước khi xử lý trước đó xuất ra
-Wall
-march=pentium
-nostdinc
-O0
-fno-builtin
-fno-defer-pop
-g
-c
-o
cũng như tất cả đường dẫn bao gồm. Bây giờ khi tôi biên dịch tệp được xử lý trước này, tệp đối tượng kết quả nhỏ hơn nhiều (khoảng 30%) so với khi tôi biên dịch bản gốc trực tiếp. Và khi tôi liên kết chương trình, trình liên kết phàn nàn về các ký hiệu bị thiếu (tất cả trong mã người dùng), điều này không xảy ra khi sử dụng tệp nguồn gốc. Tại sao lại có một sự khác biệt? Có cách nào để thực hiện công việc này không?
Tôi đang sửa đổi quy tắc tạo tệp đối tượng bằng cách thêm cờ '-E'- và' -P', mà không xóa bất kỳ thứ gì, vì vậy tôi chắc chắn rằng tôi đang sử dụng trình biên dịch chính xác và có tất cả định nghĩa. –