4

私は Arch Linux x86_64 を使用しており、WebRTC ライブラリを構築しようとしています。次のようにすると、コンパイル エラーが発生します。

[ghilliard@diadem trunk]$ ninja -C out/Release peerconnection_server
ninja: Entering directory `out/Release'
[1/1] LINK peerconnection_server
FAILED: c++ -Wl,-z,now -Wl,-z,relro -Wl,--fatal-warnings -pthread -Wl,-z,noexecstack -fPIC -B/home/ghilliard/Code/webrtc-attempt2/trunk/third_party/binutils/Linux_x64/Release/bin -Wl,--disable-new-dtags -m64 -Wl,--icf=none -fuse-ld=gold -Wl,-O1 -Wl,--as-needed -Wl,--gc-sections -o peerconnection_server -Wl,--start-group obj/talk/examples/peerconnection/server/peerconnection_server.data_socket.o obj/talk/examples/peerconnection/server/peerconnection_server.main.o obj/talk/examples/peerconnection/server/peerconnection_server.peer_channel.o obj/talk/examples/peerconnection/server/peerconnection_server.utils.o obj/talk/libjingle.a obj/net/third_party/nss/libcrssl.a obj/third_party/jsoncpp/libjsoncpp.a  -Wl,--end-group -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -ldl -lcrypto -lrt -lXext -lX11 -lXcomposite -lXrender -lexpat
/home/ghilliard/Code/webrtc-attempt2/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold: -plugin: unknown option
/home/ghilliard/Code/webrtc-attempt2/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold: use the --help option for usage information
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

リンク時の最適化に問題があるようです。ただし、LTO を有効にせずに WebRTC を構築する方法がわかりません。失敗したコマンドを手動で実行して追加すると-fno-lto、正常にリンクされます。gypすべてに適用されるように、構成内のコンパイラ/リンカー フラグを追加または変更するにはどうすればよいですか?

4

2 に答える 2

2

ninja は環境変数を考慮しませんが、gyp は考慮します。

したがって、LDFAGS 環境変数を設定した後、実行gyp_chromiumして gyp に正しい ninja ビルド ファイルを生成させる必要があります。

export LDFLAGS='-fno-lto' build/gyp_chromium ninja -C out/Release peerconnection_server

于 2014-05-21T06:58:50.940 に答える
0

ビルドする前に、環境変数にコンパイラ/リンカー フラグを設定してみてください。

export CFLAGS="${CFLAGS} -fno-lto"
export CXXFLAGS="${CXXFLAGS} -fno-lto"
export LDFLAGS="${LDFLAGS} -fno-lto"
ninja -C out/Release
于 2014-05-16T13:59:50.080 に答える