2013-06-30 39 views
5

Tôi đang cố gắng xây dựng trình liên kết vàng đi kèm với binutils GNU bằng cách sử dụng mingw. Các bước tôi đã thực hiện-Xây dựng liên kết vàng với MinGW trên Windows, FLEX/bison 'YYSTYPE' không được khai báo trong phạm vi này

  1. Cài đặt trộn lẫn với tất cả các gói bằng trình cài đặt.
  2. Cài đặt phiên bản cửa sổ của FLEX đến vị trí mặc định bằng trình cài đặt cửa sổ.
  3. Chạy ./configure trong thư mục trình liên kết vàng từ vỏ mingw có vẻ hoạt động tốt
  4. Chạy, đây là nơi tôi gặp phải một số lỗi.

Tôi đã bao gồm đầu ra hoàn toàn ./configure và thực hiện trong một pastebin đây: http://pastebin.com/1XLkZVVm

Nhưng phần quan trọng là thế này:

make[2]: Entering directory `c:/binutils-2.23.1/binutils-2.23.1/gold' 
g++ -DHAVE_CONFIG_H -I. -I. -I./../include -I./../elfcpp -DLOCALEDIR="\"/usr/lo 
cal/share/locale\"" -DBINDIR="\"/usr/local/bin\"" -DTOOLBINDIR="\"/usr/local//bi 
n\"" -DTOOLLIBDIR="\"/usr/local//lib\"" -W -Wall -Wno-format -Werror -D_LAR 
GEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -frandom-seed=expression.o -MT expression. 
o -MD -MP -MF .deps/expression.Tpo -c -o expression.o expression.cc 
In file included from expression.cc:33:0: 
script-c.h:221:7: エラー: 'yylex' initialized and declared 'extern' [-Werror] 
script-c.h:221:7: エラー: 'YYSTYPE' was not declared in this scope 
script-c.h:221:15: エラー: expected primary-expression before ',' token 
script-c.h:221:17: エラー: expected primary-expression before 'void' 
script-c.h:221:30: エラー: expression list treated as compound expression in ini 
tializer [-fpermissive] 
cc1plus.exe: all warnings being treated as errors 
make[2]: *** [expression.o] Error 1 
make[2]: Leaving directory `c:/binutils-2.23.1/binutils-2.23.1/gold' 
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory `c:/binutils-2.23.1/binutils-2.23.1/gold' 
make: *** [all] Error 2 

Tôi đã nhìn vào tập tin script-ch và nó có chức năng này:

/* Called by the bison parser skeleton to return the next token. */ 

extern int 
yylex(YYSTYPE*, void* closure); 

Tuy nhiên YYSTYPE không được định nghĩa bất cứ nơi nào t mũ tôi có thể tìm thấy.

Tôi mới sử dụng mingw và msys nên có thể tôi đã bỏ lỡ một số bước ở đâu đó. Bất kỳ trợ giúp nào nhận được điều này để xây dựng sẽ thực sự được đánh giá cao.

Trả lời

1

Vì câu hỏi này đã không được trả lời trong một vài tháng, tôi đã xem xét vấn đề.

Tôi đã tải xuống binutils-2.25 (mới nhất vào ngày này) và cố gắng theo dõi hành động của bạn.

Tôi phát hiện ra rằng nếu bạn chỉ xây dựng vàng mà không có phần còn lại của binutils nó không xây dựng. Nếu bạn thực hiện một số ./configuremake ở cấp cao nhất, nó sẽ tạo ra tiền phạt bằng vàng. Nếu bạn sau đó cd gold và làm ./configuremake (mặc dù không cần thiết) thì nó cũng hoạt động tốt.

Tôi đã thấy rằng khi nó không thành công trên vàng một mình nó đã vượt xa hơn xây dựng của bạn đã làm.

Sự chú ý của tôi cũng được rút ra cho cụm từ FLEX của bạn đến vị trí mặc định. Hướng dẫn với FLEX làm rõ rằng bạn không nên dựa vào vị trí mặc định (có thể là /Program Files/ hoặc tương tự) nhưng phải đường dẫn sử dụng không chứa bất kỳ khoảng trắng nào. Nếu bạn không nhận thấy điều này, thì đó là lỗi của bạn.

Là phiên bản mới nhất, bạn có thể làm việc bằng cách đảm bảo bạn đã cài đặt flex (và bò rừng) đúng cách trong đường dẫn không gian, sau đó tải xuống 2,25 và xây dựng toàn bộ binutils thay vì chỉ vàng.

Tôi hy vọng phân tích này hữu ích cho những người đến sau và tìm thấy các vấn đề tương tự.

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