2017-11-13 5 views
0

クロムをゼロから構築しようとしていますChecking out and building Chromium on Linux。私は20GBのRAMと150GBのHDDを搭載した仮想マシンを使って、きれいなUbuntu 16.04 LTSを実行しています。クロム(Ubuntu)をビルドする - リンカエラー

"-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. 

答えて

1

mailing listで示唆したように)私は `is_clang = true`をを使用してコンパイルするtryiedと` is_clang = false`を正常クロム

use_lld = false 
is_component_build = false 
1

clang専用のChromeビルド手順がありますが、それに従ってください。

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

このリンクエラーコードは通常打ち鳴らすためlibc++あるC++ランタイム、(GCCのlibstdc++とは対照的に)にリンクすることができないことを示唆しています。 Chromeはデフォルトでclangを使用するため、動作するclang/libC++ツールチェーンをインストールする必要があります。

また、上記のリンクで説明したように、代わりにgccを使用してビルドを試すこともできます。

+0

をコンパイルするために、これら二つのフラグを使用します。どちらもうまくいきませんでした:( –

+0

@ alive-and-well gccと似たエラーがありますか、それとも違うのですか?gcc build出力をpastebinに投稿できますか? – valiano

+0

'c_lang = true':https: //pastebin.com/ZP3y6aBk –