Skip to content

Instantly share code, notes, and snippets.

@rafis
Created March 9, 2017 10:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rafis/b72d051217483bb0159c5ba912f78bf1 to your computer and use it in GitHub Desktop.
Save rafis/b72d051217483bb0159c5ba912f78bf1 to your computer and use it in GitHub Desktop.
Compiling Phantomjs on Raspberry Pi
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