मैं स्क्रैच से क्रोमियम बनाने की कोशिश कर रहा हूं चेक आउट और Linux पर क्रोमियम बनाना. मैं एक वर्चुअल मशीन का उपयोग कर रहा हूं जिसमें 20GB रैम और 150GB HDD एक स्वच्छ Ubuntu 16.04 LTS चल रहा है।
मैं "-finstrument-functions" ध्वज का उपयोग करके संकलन कर रहा हूं।
हालांकि जब मैं निर्माण करने का प्रयास करता हूं तो मुझे एक वायर्ड त्रुटि संदेश मिलता है (नीचे देखें)। मेरे लिए यह एक लिंकिंग समस्या की तरह दिखता है। लेकिन मुझे नहीं पता कि इसे कैसे ठीक किया जाए।
[21/33890] SOLINK ./libcommon.so
FAILED: libcommon.so libcommon.so.TOC
python "../../build/toolchain/gcc_solink_wrapper.py" --readelf="readelf" --nm="nm" --sofile="./libcommon.so" --tocfile="./libcommon.so.TOC" --output="./libcommon.so" -- ../../third_party/llvm-build/Release+Asserts/bin/clang++ -shared -Wl,--fatal-warnings -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--no-as-needed -lpthread -Wl,--as-needed -fuse-ld=lld -Wl,--icf=all -m64 -Werror -Wl,--gdb-index -nostdlib++ --sysroot=../../build/linux/debian_jessie_amd64-sysroot -L../../build/linux/debian_jessie_amd64-sysroot/lib/x86_64-linux-gnu -Wl,-rpath-link=../../build/linux/debian_jessie_amd64-sysroot/lib/x86_64-linux-gnu -L../../build/linux/debian_jessie_amd64-sysroot/usr/lib/x86_64-linux-gnu -Wl,-rpath-link=../../build/linux/debian_jessie_amd64-sysroot/usr/lib/x86_64-linux-gnu -o "./libcommon.so" -Wl,-soname="libcommon.so" @"./libcommon.so.rsp"
/home/chromtest/chromium/src/out/Default/../../third_party/llvm-build/Release+Asserts/bin/ld.lld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string()
>>> referenced by gcm_messages.cc
>>> obj/components/gcm_driver/common/common/gcm_messages.o:(gcm::OutgoingMessage::OutgoingMessage())
/home/chromtest/chromium/src/out/Default/../../third_party/llvm-build/Release+Asserts/bin/ld.lld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__zero()
>>> referenced by gcm_messages.cc
[... more lines ...]
/home/chromtest/chromium/src/out/Default/../../third_party/llvm-build/Release+Asserts/bin/ld.lld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[22/33890] CXX obj/components/keyed_service/core/core/dependency_graph.o
[23/33890] ACTION //components/resources:about_credits(//build/toolchain/linux:clang_x64)
ninja: build stopped: subcommand failed.
2 जवाब
मैंने इन दो झंडों का उपयोग किया (जैसा कि मेलिंग सूची) क्रोमियम को सफलतापूर्वक संकलित करने के लिए
use_lld = false
is_component_build = false
क्लैंग के लिए समर्पित क्रोम बिल्ड निर्देश हैं, क्या आपने उनका पालन किया है?
https://chromium.googlesource.com/chromium/src/+/master/docs/clang.md
यह लिंकिंग त्रुटि बताती है कि कोड C++ रनटाइम के विरुद्ध लिंक करने में विफल रहता है, जो आमतौर पर क्लैंग के लिए libc++
होता है (जैसा कि gcc के libstdc++
के विपरीत)। क्रोम डिफ़ॉल्ट रूप से क्लैंग का उपयोग करता है, इसलिए आपके पास एक कार्यशील क्लैंग/libc++ टूलचेन स्थापित होना चाहिए।
वैकल्पिक रूप से, आप इसके बजाय gcc के साथ निर्माण करने का प्रयास कर सकते हैं, जैसा कि ऊपर दिए गए लिंक में बताया गया है।
संबंधित सवाल
नए सवाल
google-chrome
[google-chrome] Google Chrome के साथ विकास से संबंधित प्रश्नों के लिए है, एक वेब ब्राउज़र जो ब्लिंक रेंडरिंग इंजन का उपयोग करता है। चेतावनी! ब्राउज़र के लिए सामान्य समर्थन बंद-विषय है: ब्राउज़र का उपयोग करने या कॉन्फ़िगर करने के बारे में प्रश्न https://superuser.com पर पोस्ट किए जाने चाहिए। क्रोम OS और क्रोमियम ऑफ़-टॉपिक हैं: [google-chrome-os] या [क्रोमियम] के बारे में प्रश्न उन टैग का उपयोग करना चाहिए।