Ein bisschen Rat oder Idee ist nötig.
Ich versuche, Android 5.1.1 Lollipop mit Jenkins zu erstellen. Libwebviewchromium.so kann jedoch nicht erstellt werden:
...
out/target/product/generic/obj/GYP/shared_intermediates/blink/bindings/core/v8/V8SVGNumber.cpp:55: error: undefined reference to 'blink::SVGNumberTearOff::setValue(float, blink::ExceptionState&)'
out/target/product/generic/obj/STATIC_LIBRARIES/third_party_WebKit_Source_core_webcore_generated_gyp_intermediates/SVGElementFactory.cpp:383: error: undefined reference to 'blink::SVGMetadataElement::create(blink::Document&)'
external/chromium_org/third_party/WebKit/Source/core/svg/SVGNumberTearOff.h:45: error: undefined reference to 'blink::SVGNumberTearOff::SVGNumberTearOff(WTF::PassRefPtr<blink::SVGNumber>, blink::SVGElement*, blink::PropertyIsAnimValType, blink::QualifiedName const&)'
collect2: error: ld returned 1 exit status
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so] Error 1
Wenn ich versuche, es manuell zu erstellen, ist es erfolgreich:
. build/envsetup.sh
set_stuff_for_environment
lunch zh2_qemu_eng
make clean
make -j24
Ich frage mich, wie es kommt, dass derselbe Vorgang bei Verwendung einer Konsole erfolgreich sein kann und bei der Verwendung von Jenkins fehlschlägt. Könnten Sie mir bitte Ihre Ideen mitteilen?
P.S. Die Build-Maschine verfügt über 24 GB RAM und 15 GB Auslagerungsdatei sowie eine 512-GB-SSD-Flash-Disk (62% verfügbar). Das Betriebssystem ist Ubuntu 14.04LTS, 64 Bit.
$ free -m
total used free shared buffers cached
Mem: 24021 22079 1942 75 4778 8768
-/+ buffers/cache: 8532 15488
Swap: 16036 345 15691
Das Problem ist behoben. Wir haben das Jenkins/AOSP-Setup von einem anderen Server kopiert, und die Kopie war falsch. Nachdem der Befehl "ccache -c" ausgeführt wurde, funktionierte alles einwandfrei.
Ich frage mich, wie es kommt, dass derselbe Vorgang bei Verwendung einer Konsole erfolgreich sein kann und bei der Verwendung von Jenkins fehlschlägt.
Da Jenkins möglicherweise nicht mit demselben Benutzer (oder auf derselben Workstation ausgeführt wird, wenn der Agent, der den Job ausführt, eine separate Maschine ist)
Prüfen Sie, ob Unterschiede in der Umgebungsvariablen bestehen.
env
ein)Beispielsweise könnte ein Unterschied von LD_LIBRARY_PATH
die Diskrepanz zwischen den beiden Builds erklären.
Stellen Sie sicher, dass alle Header-Dateien enthalten sind und Bibliotheken zum Zeitpunkt der Kompilierung. Undefined Reference -Fehler treten hauptsächlich aus diesen beiden Gründen auf.
benutzer jenkins
hat einen eigenen ~/.bashrc
, der Umgebungsvariablen fehlen kann.
aktivieren Sie vorübergehend die Login-Shell für jenkins
, richten Sie die Umgebung ein und deaktivieren Sie sie erneut.
wenn Sie als Benutzer jenkins
manuell erstellen können, sollte es auch automatisch erstellt werden.