2014-05-20 18 views
5

Tôi đang cố gắng xây dựng ligjingle của Google theo các bước Getting started và tôi đã đến phần "Xây dựng".Trình liên kết vàng ld.gold -plugin: tùy chọn không xác định

Khi tôi phát hành một trong hai

ninja -C out/Debug 

hoặc

ninja -C out/Release 

tôi nhận được lỗi sau: I posted the output in pastebin too, if you prefer

ninja -C out/Debug 
ninja: Entering directory `out/Debug' 
[3/2606] LINK genmacro 
FAILED: cc -Wl,-z,now -Wl,-z,relro -Wl,--fatal-warnings -pthread -Wl,-z,noexecstack -fPIC -B/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin -Wl,--disable-new-dtags -m64 -Wl,--icf=none -fuse-ld=gold -Wl,--gdb-index -o genmacro -Wl,--start-group obj/third_party/yasm/source/patched-yasm/tools/genmacro/genmacro.genmacro.o -Wl,--end-group 
/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold: -plugin: unknown option 
/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold: use the --help option for usage information 
collect2: error: ld returned 1 exit status 
[3/2606] CC obj/net/third_party/nss/ssl/libssl.sslauth.o 
ninja: build stopped: subcommand failed. 

tôi đã cố gắng

ld.gold --help | grep "plugin" 

và nhận được:

--plugin PLUGIN    Load a plugin library 
--plugin-opt OPTION   Pass an option to the plugin 

Vì vậy, tôi cho rằng lỗi tôi nhận được là bởi vì ở đâu đó trong các mã, ld.gold được gọi với -plugin xxx hơn --plugin xxx

Tôi đã được "chơi "với grep -Hr và các kết hợp khác nhau của" plugin "để cố gắng tìm ra vấn đề, nhưng cho đến nay tôi chưa tìm thấy bất kỳ điều gì. Tôi cho rằng nó được ẩn ở đâu đó trong Makefile.

+0

nếu bạn muốn nhận xét nhiều dòng, thụt lề chúng bằng 4 dấu cách. nếu bạn muốn nhận xét một dòng, hãy bao quanh chúng chỉ bằng một dấu kiểm ngược ở hai bên. –

+0

Được rồi, sẽ làm. Lấy làm tiếc. – nschoe

+0

không cần phải xin lỗi, tôi chỉ không thể tưởng tượng nó dễ dàng/thú vị để làm những gì bạn đã làm ở đây để định dạng mã haha ​​ –

Trả lời

8

Vấn đề không phải là tùy chọn -plugin phải là --plugin. ld.gold chấp nhận cả hai tùy chọn nếu nó chấp nhận một trong hai tùy chọn này.

Nhưng nó chỉ chấp nhận một trong hai chúng nếu vóc dáng người binutils đã cấu hình với --enable-plugins. Documentation.

Khi bạn chạy ld.gold --help | grep "plugin" đầu ra cho thấy rằng --plugin là tùy chọn được công nhận.

Do đó vấn đề dường như là thế này: -

/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.goldkhông được cấu hình với --enable-plugins

Khi bạn chạy ld.gold --help | grep "plugin" bạn đang thực hiện đầu tiên ld.gold được tìm thấy trên PATH của bạn. Có thể là /usr/bin/ld.gold từ bản phân phối của bạn.Bạn có thể tìm hiểu bằng cách chạy:

which ld.gold 

Nhưng dù sao, nó không phải là /home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold và nó là một ld.gold rằng đã được cấu hình với --enable-plugins

Nếu bạn cd vào /home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ và chạy:

./ld.gold -plugin 

bạn wi ll nhận được:

./ld.gold: -plugin: unknown option 

Để khắc phục vấn đề giải pháp lý tưởng là để xây dựng lại /home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils theo that Documentation

Nếu bạn không thể xây dựng lại những bên thứ ba binutils từ nguồn sau đó nó sẽ lẽ làm việc nếu bạn chỉ cần sao chép hệ thống ld.gold được phát hiện bởi which qua một trong bên thứ ba binutils hoặc xóa/đổi tên bên thứ ba và thay thế bằng liên kết tượng trưng vào hệ thống. Có một cơ hội bên ngoài rằng một trong những hack này sẽ khiến bạn bị vỡ.

+0

Wow cảm ơn rất nhiều cho lời giải thích đó. Bạn hoàn toàn đúng: phiên bản Linux_x64/Release/bin không có hỗ trợ plugin (điều này rất lạ vì đây là mã riêng của Google đã tải xuống (và được xây dựng?) Và họ sử dụng nó để liên kết các tệp .. .) Dù sao, tôi đang theo tài liệu để thử xây dựng lại binutils với hỗ trợ plugin, nếu điều đó không thành công, tôi sẽ cố tạo một liên kết tượng trưng đến /usr/bin/ld.gold của mình. Dù sao một lần nữa cảm ơn và tôi sẽ đăng lại ở đây một lần nữa để biết tôi có quản lý hay không. – nschoe

+0

Vâng nó đã hoạt động, cảm ơn một lần nữa: bạn thực sự đã giúp đỡ ở đây. Tôi vẫn không thể biên dịch khi gặp lỗi: '' ' cc: lỗi: tùy chọn dòng lệnh không được công nhận‘ -Wno- ’ ' '' Nhưng điều đó chắc chắn đã giải quyết được vấn đề của tôi với ld.gold, cảm ơn. (Bất kỳ ý tưởng nào tại sao lỗi mới?) – nschoe

+0

wow, giải thích tuyệt vời –

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