Created
March 9, 2017 10:44
-
-
Save rafis/b72d051217483bb0159c5ba912f78bf1 to your computer and use it in GitHub Desktop.
Compiling Phantomjs on Raspberry Pi
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
There is an excellent article about compiling Phantomjs on Raspberry Pi 2: | |
http://raspberrypimaker.com/how-to-compile-phantomjs-on-the-raspberry-pi-2 | |
But I would like to emphasize attention on one part which is RAM usage. RAM usage of cc1plus on this project is really huge. If you will | |
compile with `./build.py --jobs=N` where N is greater or equal 2 then you will propably run into issues: | |
g++ -c -Wall -Wextra -Wreturn-type -Wchar-subscripts -Wformat-security -Wreturn-type -Wno-unused-parameter -Wno-sign-compare -Wno-switch -Wno-switch-enum -Wundef -Wmissing-noreturn -Winit-self -pipe -ffunction-sections -fdata-sections -fno-strict-aliasing -O2 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -std=c++0x -fno-exceptions -D_REENTRANT -MMD -DQT_NO_MTDEV -DQT_NO_LIBUDEV -DQT_NO_EVDEV -DQT_NO_TSLIB -DQT_NO_LIBINPUT -DQT_NO_GRAPHICSVIEW -DQT_NO_GRAPHICSEFFECT -DQT_NO_STYLESHEET -DQT_NO_STYLE_CDE -DQT_NO_STYLE_CLEANLOOKS -DQT_NO_STYLE_MOTIF -DQT_NO_STYLE_PLASTIQUE -DQT_NO_PRINTPREVIEWDIALOG -DBUILDING_QT__=1 -DNDEBUG -DENABLE_3D_RENDERING=1 -DENABLE_BLOB=1 -DENABLE_CANVAS_PATH=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_CSS_BOX_DECORATION_BREAK=1 -DENABLE_CSS_COMPOSITING=1 -DENABLE_CSS_EXCLUSIONS=1 -DENABLE_CSS_FILTERS=1 -DENABLE_CSS_IMAGE_SET=1 -DENABLE_CSS_REGIONS=1 -DENABLE_CSS_SHAPES=1 -DENABLE_CSS_STICKY_POSITION=1 -DENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED=1 -DENABLE_DATALIST_ELEMENT=1 -DENABLE_DETAILS_ELEMENT=1 -DENABLE_DOWNLOAD_ATTRIBUTE=1 -DENABLE_FAST_MOBILE_SCROLLING=1 -DENABLE_FILTERS=1 -DENABLE_FTPDIR=1 -DENABLE_FULLSCREEN_API=1 -DENABLE_ICONDATABASE=1 -DENABLE_IFRAME_SEAMLESS=1 -DENABLE_INDEXED_DATABASE=1 -DENABLE_INPUT_TYPE_COLOR=1 -DENABLE_INSPECTOR=1 -DENABLE_INSPECTOR_SERVER=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_LEGACY_NOTIFICATIONS=1 -DENABLE_LEGACY_VIEWPORT_ADAPTION=1 -DENABLE_LEGACY_VENDOR_PREFIXES=1 -DENABLE_LEGACY_WEB_AUDIO=1 -DENABLE_LINK_PREFETCH=1 -DENABLE_METER_ELEMENT=1 -DENABLE_MHTML=1 -DENABLE_NOTIFICATIONS=1 -DENABLE_PAGE_VISIBILITY_API=1 -DENABLE_PROGRESS_ELEMENT=1 -DENABLE_RESOLUTION_MEDIA_QUERY=1 -DENABLE_REQUEST_ANIMATION_FRAME=1 -DENABLE_SHARED_WORKERS=1 -DENABLE_SMOOTH_SCROLLING=1 -DENABLE_SQL_DATABASE=1 -DENABLE_SUBPIXEL_LAYOUT=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_TOUCH_ADJUSTMENT=1 -DENABLE_TOUCH_EVENTS=1 -DENABLE_VIEW_MODE_CSS_MEDIA=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_WEB_TIMING=1 -DENABLE_WORKERS=1 -DENABLE_XHR_TIMEOUT=1 -DWTF_USE_TILED_BACKING_STORE=1 -DWTF_USE_CROSS_PLATFORM_CONTEXT_MENUS=1 -DHAVE_QTPRINTSUPPORT=1 -DHAVE_QSTYLE=1 -DHAVE_QTTESTLIB=1 -DWTF_USE_LIBXML2=1 -DENABLE_XSLT=1 -DWTF_USE_ZLIB=1 -DWTF_USE_WEBP=1 -DHAVE_XCOMPOSITE=1 -DHAVE_XRENDER=1 -DHAVE_GLX=1 -DHAVE_FONTCONFIG=1 -DPLUGIN_ARCHITECTURE_UNSUPPORTED=1 -DHAVE_SQLITE3=1 -DENABLE_GAMEPAD=1 -DENABLE_TOUCH_SLIDER=1 -DWTF_USE_LEVELDB=1 -DENABLE_ACCELERATED_2D_CANVAS=0 -DENABLE_BATTERY_STATUS=0 -DENABLE_CANVAS_PROXY=0 -DENABLE_CSP_NEXT=0 -DENABLE_CSS_GRID_LAYOUT=0 -DENABLE_CSS_HIERARCHIES=0 -DENABLE_CSS_IMAGE_ORIENTATION=0 -DENABLE_CSS_IMAGE_RESOLUTION=0 -DENABLE_CSS_SHADERS=0 -DENABLE_CSS_VARIABLES=0 -DENABLE_CSS3_CONDITIONAL_RULES=0 -DENABLE_CSS3_TEXT=0 -DENABLE_CSS3_TEXT_LINE_BREAK=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_DATAGRID=0 -DENABLE_DATA_TRANSFER_ITEMS=0 -DENABLE_DEVICE_ORIENTATION=0 -DENABLE_DIRECTORY_UPLOAD=0 -DENABLE_FILE_SYSTEM=0 -DENABLE_FONT_LOAD_EVENTS=0 -DENABLE_GEOLOCATION=0 -DENABLE_GESTURE_EVENTS=0 -DENABLE_HIGH_DPI_CANVAS=0 -DENABLE_INPUT_SPEECH=0 -DENABLE_INPUT_TYPE_DATE=0 -DENABLE_INPUT_TYPE_DATETIME_INCOMPLETE=0 -DENABLE_INPUT_TYPE_DATETIMELOCAL=0 -DENABLE_INPUT_TYPE_MONTH=0 -DENABLE_INPUT_TYPE_TIME=0 -DENABLE_INPUT_TYPE_WEEK=0 -DENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 -DENABLE_MATHML=0 -DENABLE_MEDIA_SOURCE=0 -DENABLE_MEDIA_STATISTICS=0 -DENABLE_MEDIA_STREAM=0 -DENABLE_MICRODATA=0 -DENABLE_MOUSE_CURSOR_SCALE=0 -DENABLE_NAVIGATOR_CONTENT_UTILS=0 -DENABLE_NETSCAPE_PLUGIN_API=0 -DENABLE_NETWORK_INFO=0 -DENABLE_NOSNIFF=0 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_PROXIMITY_EVENTS=0 -DENABLE_QUOTA=0 -DENABLE_RESOURCE_TIMING=0 -DENABLE_SCRIPTED_SPEECH=0 -DENABLE_SECCOMP_FILTERS=0 -DENABLE_SHADOW_DOM=0 -DENABLE_STYLE_SCOPED=0 -DENABLE_TEMPLATE_ELEMENT=0 -DENABLE_TEXT_AUTOSIZING=0 -DENABLE_THREADED_HTML_PARSER=0 -DENABLE_TOUCH_ICON_LOADING=0 -DENABLE_USER_TIMING=0 -DENABLE_VIBRATION=0 -DENABLE_VIDEO=0 -DENABLE_VIDEO_TRACK=0 -DENABLE_WEBGL=0 -DENABLE_WEB_AUDIO=0 -DSTATICALLY_LINKED_WITH_leveldb -DSTATICALLY_LINKED_WITH_JavaScriptCore -DSTATICALLY_LINKED_WITH_WTF -DBUILDING_WebCore -DBUILDING_WEBKIT -DQT_ASCII_CAST_WARNINGS -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I. -I. -IModules/filesystem -IModules/geolocation -IModules/indexeddb -IModules/navigatorcontentutils -IModules/notifications -IModules/proximity -IModules/quota -IModules/webaudio -IModules/webdatabase -IModules/websockets -Iaccessibility -Ibindings -Ibindings/generic -Ibridge -Ibridge/qt -Icss -Idom -Idom/default -Iediting -Ifileapi -Ihistory -Ihtml -Ihtml/canvas -Ihtml/forms -Ihtml/parser -Ihtml/shadow -Ihtml/track -Iinspector -Iloader -Iloader/appcache -Iloader/archive -Iloader/cache -Iloader/icon -Imathml -Ipage -Ipage/animation -Ipage/qt -Ipage/scrolling -Ipage/scrolling/coordinatedgraphics -Iplatform -Iplatform/animation -Iplatform/audio -Iplatform/graphics -Iplatform/graphics/cpu/arm -Iplatform/graphics/cpu/arm/filters -Iplatform/graphics/filters -Iplatform/graphics/filters/texmap -Iplatform/graphics/opengl -Iplatform/graphics/opentype -Iplatform/graphics/qt -Iplatform/graphics/surfaces -Iplatform/graphics/texmap -Iplatform/graphics/texmap/coordinated -Iplatform/graphics/transforms -Iplatform/image-decoders -Iplatform/image-decoders/bmp -Iplatform/image-decoders/ico -Iplatform/image-decoders/gif -Iplatform/image-decoders/jpeg -Iplatform/image-decoders/png -Iplatform/image-decoders/webp -Iplatform/leveldb -Iplatform/mock -Iplatform/network -Iplatform/network/qt -Iplatform/qt -Iplatform/sql -Iplatform/text -Iplatform/text/transcoder -Iplugins -Irendering -Irendering/mathml -Irendering/shapes -Irendering/style -Irendering/svg -Istorage -Isvg -Isvg/animation -Isvg/graphics -Isvg/graphics/filters -Isvg/properties -Itesting -I/home/pi/phantomjs/src/qt/qtwebkit/Source/WebCore/websockets -Iworkers -Ixml -Ixml/parser -I../ThirdParty -Ibridge/jsc -Ibindings/js -Ibridge/c -Itesting/js -Igenerated -Iplatform/linux -IModules/gamepad -Iloader/archive/mhtml -I../../Source -I/home/pi/phantomjs/src/qt/qtwebkit/Source/include -I../ThirdParty/leveldb/include -I../ThirdParty/leveldb -I../JavaScriptCore -I../../Source -I../WTF -I../JavaScriptCore/assembler -I../JavaScriptCore/bytecode -I../JavaScriptCore/bytecompiler -I../JavaScriptCore/heap -I../JavaScriptCore/dfg -I../JavaScriptCore/debugger -I../JavaScriptCore/disassembler -I../JavaScriptCore/interpreter -I../JavaScriptCore/jit -I../JavaScriptCore/llint -I../JavaScriptCore/parser -I../JavaScriptCore/profiler -I../JavaScriptCore/runtime -I../JavaScriptCore/tools -I../JavaScriptCore/yarr -I../JavaScriptCore/API -I../JavaScriptCore/ForwardingHeaders -I../JavaScriptCore/generated -I/home/pi/phantomjs/src/qt/qtwebkit/Source/JavaScriptCore/generated/LLIntOffsetsExtractor -I../WTF -isystem /usr/include/libxml2 -isystem /usr/include/arm-linux-gnueabihf -I/home/pi/phantomjs/src/qt/qtbase/include/QtGui/5.5.1 -I/home/pi/phantomjs/src/qt/qtbase/include/QtGui/5.5.1/QtGui -I/home/pi/phantomjs/src/qt/qtbase/include -I/home/pi/phantomjs/src/qt/qtbase/include/QtGui -I/home/pi/phantomjs/src/qt/qtbase/include/QtNetwork -I/home/pi/phantomjs/src/qt/qtbase/include/QtSql -I/home/pi/phantomjs/src/qt/qtbase/include/QtCore/5.5.1 -I/home/pi/phantomjs/src/qt/qtbase/include/QtCore/5.5.1/QtCore -I/home/pi/phantomjs/src/qt/qtbase/include/QtCore -I.moc -I/home/pi/phantomjs/src/qt/qtbase/mkspecs/linux-g++ -o .obj/css/CSSAllInOne.o css/CSSAllInOne.cpp | |
{standard input}: Assembler messages: | |
{standard input}:43678: Warning: end of file not at end of a line; newline inserted | |
{standard input}:43866: Error: bad instruction `_zn7webcore22applypropertyfilllayerins_8fillsizeelns_13csspropertyide1300elns_14efilllayertypee1exadl_zns_11renderstyle16accessmasklayerseveexadl_znks4_10masklayerseveexadl_znks_9filllayer9issizeseteveexadl_znks5_4sizeeveexadl_zns5_7set' | |
g++: internal compiler error: Killed (program cc1plus) | |
Please submit a full bug report, | |
with preprocessed source if appropriate. | |
See <file:///usr/share/doc/gcc-4.9/README.Bugs> for instructions. | |
Makefile.WebCore.Target:137975: recipe for target '.obj/css/CSSAllInOne.o' failed | |
make[2]: *** [.obj/css/CSSAllInOne.o] Error 4 | |
make[2]: *** Waiting for unfinished jobs.... | |
If a process has been killed the first thing to do is to check `dmesg` and you can see that this was done by Linux OOM Killer: | |
[17714366.996789] Out of memory: Kill process 30580 (cc1plus) score 222 or sacrifice child | |
[17714366.996803] Killed process 30580 (cc1plus) total-vm:482988kB, anon-rss:255560kB, file-rss:0kB | |
So I recommend compile only with single worker: | |
./build.py --jobs=1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment