需要一些建议或想法。
我正在尝试使用Jenkins构建Android 5.1.1 Lollipop。但是它无法构建libwebviewchromium.so:
...
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
同时,当我尝试手动构建它时,它会成功:
. build/envsetup.sh
set_stuff_for_environment
lunch zh2_qemu_eng
make clean
make -j24
我想知道为什么使用控制台可以成功完成相同的操作,而使用Jenkins却无法成功完成相同的操作。您能和我分享您的想法吗?
P.S。该构建机器具有24 GB的RAM和15 GB的交换文件,以及512 GB的SSD闪存盘(62%可用)。操作系统是64位的Ubuntu 14.04LTS。
$ free -m
total used free shared buffers cached
Mem: 24021 22079 1942 75 4778 8768
-/+ buffers/cache: 8532 15488
Swap: 16036 345 15691
答案 0 :(得分:5)
我想知道为什么使用控制台可以成功完成相同的操作,而使用Jenkins却无法完成相同的操作。
因为Jenkins可能不会以同一用户(或如果执行作业的代理是一台单独的机器,则在同一工作站上)运行
仔细检查以下各项之间是否存在环境变量差异
env
)例如,LD_LIBRARY_PATH
的不同可以解释两个版本之间的差异。
答案 1 :(得分:3)
确保在编译时已包含所有头文件和库链接。 未定义引用错误主要是由于这两个原因引起的。
答案 2 :(得分:2)
用户jenkins
拥有自己的~/.bashrc
,可能缺少环境变量。
暂时为jenkins
启用登录shell,设置环境,然后再次禁用它。
当能够以用户jenkins
进行手动构建时,它也应该在自动化时进行构建。
答案 3 :(得分:1)
问题已解决。 我们从另一台服务器复制了Jenkins / AOSP设置,但是副本出了点问题。 ccache的清理解决了该问题。执行“ ccache -c”命令后,一切正常。