मैं स्क्रैच से क्रोमियम बनाने की कोशिश कर रहा हूं चेक आउट और 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.
0
alive-and-well 13 नवम्बर 2017, 14:01

2 जवाब

सबसे बढ़िया उत्तर

मैंने इन दो झंडों का उपयोग किया (जैसा कि मेलिंग सूची) क्रोमियम को सफलतापूर्वक संकलित करने के लिए

use_lld = false
is_component_build = false
1
alive-and-well 20 नवम्बर 2017, 11:03

क्लैंग के लिए समर्पित क्रोम बिल्ड निर्देश हैं, क्या आपने उनका पालन किया है?

https://chromium.googlesource.com/chromium/src/+/master/docs/clang.md

यह लिंकिंग त्रुटि बताती है कि कोड C++ रनटाइम के विरुद्ध लिंक करने में विफल रहता है, जो आमतौर पर क्लैंग के लिए libc++ होता है (जैसा कि gcc के libstdc++ के विपरीत)। क्रोम डिफ़ॉल्ट रूप से क्लैंग का उपयोग करता है, इसलिए आपके पास एक कार्यशील क्लैंग/libc++ टूलचेन स्थापित होना चाहिए।

वैकल्पिक रूप से, आप इसके बजाय gcc के साथ निर्माण करने का प्रयास कर सकते हैं, जैसा कि ऊपर दिए गए लिंक में बताया गया है।

1
valiano 13 नवम्बर 2017, 23:17