2012-03-15 21 views
9

Tôi đang cố gắng để có được ZBar trong phiên gỡ lỗi. Tôi có thể làm như vậy, nhưng tôi không thể làm cho trình tối ưu hóa tắt, vì vậy phiên gỡ lỗi của tôi nhảy xung quanh bất ngờ và nhiều biến được gắn nhãn là optimized-out trong Eclipse Indigo. Tôi đang chạy trong Ubuntu.Không thể tắt trình tối ưu hóa gcc, Makefile từ tự động

Tôi đã thử thêm -O0 ở bên phải trong bất kỳ lệnh gọi gcc nào trong Makefiles nhất có thể, vì lần cuối -O là tác vụ hành động. Tôi đã sử dụng -Q --help = trình tối ưu hóa để tìm nội dung cần tìm, nhưng kết quả của nó hơi lạ:

libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./include -I./zbar -I./include -O0 -O0 -Q --help=optimizers -Wall -Wno-parentheses -O0 -g -O0 -Q --help=optimizers -MT zbar/zbar_libzbar_la-config.lo -MD -MP -MF zbar/.deps/zbar_libzbar_la-config.Tpo -c zbar/config.c -fPIC -DPIC -o zbar/.libs/zbar_libzbar_la-config.o 
The following options control optimizations: 
make[1]: *** [zbar/zbar_libzbar_la-config.lo] Error 1 
    -O<number>       
make: *** [all] Error 2 
    -Ofast        
    -Os        
    -falign-functions     [disabled] 
    -falign-jumps      [disabled] 
    -falign-labels     [disabled] 
    -falign-loops      [disabled] 
    -fasynchronous-unwind-tables  [enabled] 
    -fbranch-count-reg    [enabled] 
    -fbranch-probabilities   [disabled] 
    -fbranch-target-load-optimize  [disabled] 
    -fbranch-target-load-optimize2 [disabled] 
    -fbtr-bb-exclusive    [disabled] 
    -fcaller-saves     [disabled] 
    -fcombine-stack-adjustments  [disabled] 
    -fcommon       [enabled] 
    -fcompare-elim     [disabled] 

etc... 

Rõ ràng, tôi đã đặt -O0 ở một vài nơi. Tôi không có bất kỳ kinh nghiệm với automake, được sử dụng bởi ZBar. Tôi đang cố gắng để tránh phải làm cho Makefile của riêng tôi từ đầu, có bất cứ đề nghị về nơi để xem xét để vô hiệu hóa các ưu hoa? Tôi đã tìm kiếm các Makefiles cho tất cả các mối quan hệ liên quan đến tối ưu hóa của -O và bất kỳ -f nào; Tôi đã không tìm thấy. Dự án được làm sạch sau khi các nỗ lực sửa đổi Makefile được thực hiện.

Trả lời

18

Tắt tối ưu hóa có thể dễ dàng thực hiện nhất khi bạn chạy cấu hình hoặc khi bạn chạy thực hiện. Hoặc

configure CFLAGS='-g -O0' CXXFLAGS='-g -O0' 

hoặc

make CFLAGS='-g -O0' CXXFLAGS='-g -O0' clean all 

nên làm những gì bạn muốn. Nếu bạn đặt CFLAGS/CXXFLAGS trong khi định cấu hình, các giá trị đó sẽ được sử dụng cho tất cả các lời gọi thực hiện không ghi đè chúng, trong khi đặt chúng ở thời gian thực hiện là thỏa thuận một lần.

+2

Không có hiệu lực. Lưu ý rằng tôi không phải là tác giả của mã, và tôi chỉ đơn giản là cố gắng để hoàn thành một phân tích thuật toán. Đặt -O0 với lệnh gọi make đặt -O0 trước bất kỳ cờ nào khác để bật tối ưu hóa, làm cho nó không hiệu quả. Tôi không thấy bất kỳ cờ tối ưu nào được đặt trong hàng nghìn dòng mã Makefile ... – vlad417

+0

CFLAGS phải là mục cuối cùng được đặt trong COMPILE trong makefile, vì vậy trừ khi trình duy trì gói ghi đè nỗ lực của bạn để đặt CFLAGS (nên được báo cáo là lỗi) cài đặt của bạn phải là cuối cùng. Nếu bạn thực hiện "CFLAGS = tùy chọn-là-một-lỗi", tùy chọn đó có xuất hiện trong quá trình biên dịch không? –

+0

Khi tôi thêm cờ giả, tôi nhận được: 'gcc: lỗi: tùy chọn không được công nhận‘ tùy chọn-là-lỗi ’là – vlad417

Các vấn đề liên quan