如何从git构建和安装最新的SimpleScreenRecorder?

我想按照开发人员的建议从git安装SimpleScreenRecorder(SSR)。 二进制版本崩溃,git版本可能已经解决了我的崩溃问题。

主页 – SimpleScreenRecorder – Maarten Baert的网站

不幸的是,我无法在Ubuntu上构建当前/最新的git版本。 可在此处找到相关说明: https : //github.com/MaartenBaert/ssr

在这些说明中,开发人员说,“如果32位版本因库缺失而失败,但64位工作正常,请再次阅读上述说明:)。” 这似乎是我的问题,但再次阅读说明并没有澄清我的问题。 所以我在这里问。

说明:

sudo apt-get install build-essential pkg-config qt4-qmake libqt4-dev libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libasound2-dev libpulse-dev libgl1-mesa-dev libx11-dev libxext-dev libxfixes-dev g++-multilib ia32-libs 

如果找不到某些库的32位版本,但64位工作正常,请尝试以下方法:

 cd /usr/lib/i386-linux-gnu/ sudo ln -s libGL.so.1 mesa/libGL.so sudo ln -s mesa/libGL.so libGL.so sudo ln -s libGLU.so.1 libGLU.so sudo ln -s libX11.so.6 libX11.so sudo ln -s libXext.so.6 libXext.so sudo ln -s libXfixes.so.3 libXfixes.so sudo ldconfig 

开发者说:

我不知道这是否是正确的方法,但它对我有用。 如果您使用的是专有驱动程序,则libGL的位置会有所不同。 在这种情况下,使用’libGL.so’而不是’mesa / libGL.so’。 编译和安装

注意:我有一个专有(fglrx)video驱动程序。 我认为可以在这里找到它(根据我在xorg.log中看到的内容):

 /usr/lib/xorg/modules/drivers/fglrx_drv.so 

但是,我需要这一步的具体帮助!

如果已将SimpleScreenRecorder作为软件包从存储库安装,则应首先卸载该版本以避免冲突。 如果不这样做,这两个版本可能会相互覆盖或使用错误版本的GLInject库。

编译和安装所有内容的最简单方法是运行:

 ./simple-build-and-install 

这将编译64位主程序和库,然后编译32位库。 如果32位版本因库缺失而失败,但64位工作正常,请再次阅读上面的说明:)。

这似乎是我的主要问题。 我看到的错误是:

configure:错误:缺少必需的库

但是,我也看到了这个:

 Detecting ffmpeg/libav ... Detected ffmpeg. 

这让我感到担忧,因为ffmpeg是一个自定义编译版本,我怀疑它有所需的选项……虽然我确实启用了libx264,也许这就足够了。 我不知道。 这是相关的ffmpeg信息:

 $ ffmpeg -version ffmpeg version 0.10.8-7:0.10.8-1~precise1 built on Sep 5 2013 14:56:20 with gcc 4.6.3 configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.8-1~precise1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static libavutil 51. 35.100 / 51. 35.100 libavcodec 53. 61.100 / 53. 61.100 libavformat 53. 32.100 / 53. 32.100 libavdevice 53. 4.100 / 53. 4.100 libavfilter 2. 61.100 / 2. 61.100 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 6.100 / 0. 6.100 libpostproc 52. 0.100 / 52. 0.100 

这是整个SSR构建日志:

 $ ./simple-build-and-install Detecting ffmpeg/libav ... Detected ffmpeg. Detecting x86/x64 ... x86/x64 = 1 Configuring ... checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking dependency style of gcc... gcc3 checking for ar... ar checking the archiver (ar) interface... ar checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking whether the shell understands some XSI constructs... yes checking whether the shell understands "+="... yes checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking whether gcc understands -c and -o together... (cached) yes checking dependency style of gcc... (cached) gcc3 checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC -DPIC checking if g++ PIC flag -fPIC -DPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking if g++ supports -c -o file.o... (cached) yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking for a sed that does not truncate output... (cached) /bin/sed checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for QT4... yes checking for moc-qt4... /usr/bin/moc-qt4 checking for rcc-qt4... no checking for rcc... /usr/bin/rcc checking for uic-qt4... /usr/bin/uic-qt4 checking for clock_gettime in -lrt... yes checking for dlfcn.h... (cached) yes checking for dlsym in -ldl... yes checking libavformat/avformat.h usability... yes checking libavformat/avformat.h presence... yes checking for libavformat/avformat.h... yes checking for av_guess_format in -lavformat... yes checking libavcodec/avcodec.h usability... yes checking libavcodec/avcodec.h presence... yes checking for libavcodec/avcodec.h... yes checking for avcodec_find_encoder_by_name in -lavcodec... yes checking libavutil/avutil.h usability... yes checking libavutil/avutil.h presence... yes checking for libavutil/avutil.h... yes checking libavutil/mathematics.h usability... yes checking libavutil/mathematics.h presence... yes checking for libavutil/mathematics.h... yes checking for av_rescale_q in -lavutil... yes checking libswscale/swscale.h usability... yes checking libswscale/swscale.h presence... yes checking for libswscale/swscale.h... yes checking for sws_scale in -lswscale... yes checking X11/Xlib.h usability... yes checking X11/Xlib.h presence... yes checking for X11/Xlib.h... yes checking for X11/Xutil.h... yes checking for XOpenDisplay in -lX11... yes checking for X11/extensions/Xfixes.h... yes checking for XFixesGetCursorImage in -lXfixes... yes checking for X11/extensions/XShm.h... yes checking for XShmCreateImage in -lXext... yes checking alsa/asoundlib.h usability... yes checking alsa/asoundlib.h presence... yes checking for alsa/asoundlib.h... yes checking for snd_pcm_open in -lasound... yes checking pulse/context.h usability... yes checking pulse/context.h presence... yes checking for pulse/context.h... yes checking for pa_context_new in -lpulse... yes checking GL/gl.h usability... yes checking GL/gl.h presence... yes checking for GL/gl.h... yes checking for GL/glext.h... yes checking for GL/glx.h... yes checking for glPushAttrib in -lGL... yes checking GL/glu.h usability... yes checking GL/glu.h presence... yes checking for GL/glu.h... yes checking for gluErrorString in -lGLU... yes checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating data/Makefile config.status: creating glinject/Makefile config.status: creating src/Makefile config.status: creating config.h config.status: config.h is unchanged config.status: executing depfiles commands config.status: executing libtool commands Compiling ... make all-recursive make[1]: Entering directory `/workspaces/ssr/build' Making all in data make[2]: Entering directory `/workspaces/ssr/build/data' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/workspaces/ssr/build/data' Making all in glinject make[2]: Entering directory `/workspaces/ssr/build/glinject' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/workspaces/ssr/build/glinject' Making all in src make[2]: Entering directory `/workspaces/ssr/build/src' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/workspaces/ssr/build/src' make[2]: Entering directory `/workspaces/ssr/build' make[2]: Leaving directory `/workspaces/ssr/build' make[1]: Leaving directory `/workspaces/ssr/build' Configuring 32-bit GLInject library ... checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc -m32 checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc -m32 accepts -g... yes checking for gcc -m32 option to accept ISO C89... none needed checking whether gcc -m32 understands -c and -o together... yes checking dependency style of gcc -m32... gcc3 checking for ar... ar checking the archiver (ar) interface... ar checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc -m32... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking whether the shell understands some XSI constructs... yes checking whether the shell understands "+="... yes checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc -m32 object... ok checking for sysroot... no checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -m32 -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc -m32 supports -fno-rtti -fno-exceptions... no checking for gcc -m32 option to produce PIC... -fPIC -DPIC checking if gcc -m32 PIC flag -fPIC -DPIC works... yes checking if gcc -m32 static flag -static works... yes checking if gcc -m32 supports -c -o file.o... yes checking if gcc -m32 supports -c -o file.o... (cached) yes checking whether the gcc -m32 linker (/usr/bin/ld -m elf_i386) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for gcc... (cached) gcc -m32 checking whether we are using the GNU C compiler... (cached) yes checking whether gcc -m32 accepts -g... (cached) yes checking for gcc -m32 option to accept ISO C89... (cached) none needed checking whether gcc -m32 understands -c and -o together... (cached) yes checking dependency style of gcc -m32... (cached) gcc3 checking whether we are using the GNU C++ compiler... yes checking whether g++ -m32 accepts -g... yes checking dependency style of g++ -m32... gcc3 checking how to run the C++ preprocessor... g++ -m32 -E checking for ld used by g++ -m32... /usr/bin/ld -m elf_i386 checking if the linker (/usr/bin/ld -m elf_i386) is GNU ld... yes checking whether the g++ -m32 linker (/usr/bin/ld -m elf_i386) supports shared libraries... yes checking for g++ -m32 option to produce PIC... -fPIC -DPIC checking if g++ -m32 PIC flag -fPIC -DPIC works... yes checking if g++ -m32 static flag -static works... yes checking if g++ -m32 supports -c -o file.o... yes checking if g++ -m32 supports -c -o file.o... (cached) yes checking whether the g++ -m32 linker (/usr/bin/ld -m elf_i386) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking for a sed that does not truncate output... (cached) /bin/sed checking for clock_gettime in -lrt... yes checking for dlfcn.h... (cached) yes checking for dlsym in -ldl... yes checking X11/Xlib.h usability... yes checking X11/Xlib.h presence... yes checking for X11/Xlib.h... yes checking for X11/Xutil.h... yes checking for XOpenDisplay in -lX11... no configure: error: required library missing 

我在开发人员的帮助下完成了这项工作。 首先,开发人员说我的ffmpeg版本很好。 他还澄清说,如果simple-build-and-install的输出包括’配置32位GLInject库’(即,如果你设法在构建过程中达到这一点),则意味着64位构建部分是好。 这意味着解决方案是使用他的符号链接解决方法。

以下是我的确切步骤。

请注意,我跳过了开发人员建议的一个步骤。 我跳过了它,因为目标链接已经存在,我想在不改变链接的情况下尝试它。 (有效。)

 sudo apt-get install build-essential pkg-config qt4-qmake libqt4-dev libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libasound2-dev libpulse-dev libgl1-mesa-dev libx11-dev libxext-dev libxfixes-dev g++-multilib ia32-libs cd /workspaces/ (or any path you choose - see note below) git clone https://github.com/MaartenBaert/ssr.git (in my case the project path is /workspaces/ssr/) sudo mkdir /usr/lib32/fglrx/ cd /usr/lib/i386-linux-gnu/ sudo ln -s libGL.so.1 /usr/lib32/fglrx/libGL.so # only for proprietary AMD drivers! # SKIP: sudo ln -s fglrx/libGL.so /usr/lib32/libGL.so # only for proprietary AMD drivers! sudo ln -s libGLU.so.1 libGLU.so sudo ln -s libX11.so.6 libX11.so sudo ln -s libXext.so.6 libXext.so sudo ln -s libXfixes.so.3 libXfixes.so sudo ldconfig cd /path/to/ssr (will be the ssr directory under `/workspaces/` in my example) $ ./simple-build-and-install 

最终结果:

 Running post-install script ... Done. 

所以我跑了它并没有崩溃! :-)这是第一次重大改变。

然后我测试了它。 我使用了所有默认设置。 录制的截屏video看起来非常好!!! 我非常高兴。 该软件易于使用,效果很好。