精华内容
下载资源
问答
  • golang 交叉编译MinGW x64

    2015-06-04 10:05:43
    解压即可,然后按照网上的教程编写一个bat处理文件点击稍等十多分钟就可以完成golang交叉编译
  • mingw64 交叉编译工具

    2014-08-05 14:37:12
    用于在 windows 下交叉编译 linux 程序,并生成 dll、lib 的交叉编译工具,建议直接解压到某个盘符下,因为环境变量的路径设置不允许路径中包含空格
  • VLC交叉编译mingW

    千次阅读 2013-07-08 14:56:45
    VLC交叉编译mingW)说明文档: 〇、安装Ubuntu 12.04 LTS 一、安装mingw 1. sudo apt-get install gcc-mingw-w64-i686 g++-mingw-w64 2. sudo apt-get install mingw-w64 3. sudo apt-get install mingw-w64-...

    VLC交叉编译(mingW)说明文档:


    〇、安装Ubuntu 12.04 LTS


    一、安装mingw
    1. sudo apt-get install gcc-mingw-w64-i686 g++-mingw-w64
    2. sudo apt-get install mingw-w64
    3. sudo apt-get install mingw-w64-tools
    4. //取得mingw-w64更新包防止编译出错,版本可先查最新的
    wget http://ftp.jp.debian.org/debian/pool/main/m/mingw-w64/mingw-w64-dev_3.0~svn5496-1_all.deb
    sudo dpkg -i mingw-w64-dev_3.0~svn5496-1_all.deb
    //报错,先安装下面两个
    wget http://ftp.jp.debian.org/debian/pool/main/m/mingw-w64/mingw-w64-i686-dev_3.0~svn5496-1_all.deb
    sudo dpkg -i mingw-w64-i686-dev_3.0~svn5496-1_all.deb


    wget http://ftp.jp.debian.org/debian/pool/main/m/mingw-w64/mingw-w64-x86-64-dev_3.0~svn5496-1_all.deb
    sudo dpkg -i mingw-w64-x86-64-dev_3.0~svn5496-1_all.deb


    //再安装
    sudo dpkg -i mingw-w64-dev_3.0~svn5496-1_all.deb


    二、安装工具
    sudo apt-get install lua5.1 liblua5.1-dev
    sudo apt-get install git
    sudo apt-get install autoconf


    三、开始编译
    cd vlc
    mkdir -p contrib/win32
    cd contrib/win32
    ../bootstrap --host=i686-w64-mingw32
    make prebuilt
    cd ../..(回到vlc源目录)
    ./bootstrap
    mkdir win32 && cd win32
    ../extras/package/win32/configure.sh --host=i686-w64-mingw32 --enable-optimize-memory --without-x --disable-mad --disable-faad --disable-a52 --disable-goom --disable-libgcrypt --disable-update-check --disable-nls --disable-dbus --disable-dbus-control --disable-telepathy --disable-lua --disable-httpd --disable-libproxy --disable-dc1394 --disable-dv --disable-linsys --disable-dvdread --disable-dvdnav --disable-bluray --disable-opencv --disable-smb --disable-sftp --disable-v4l2 --disable-pvr --disable-decklink --disable-gnomevfs --disable-vcdx --disable-vcd --disable-libcddb --disable-macosx-eyetv --disable-macosx-qtkit --disable-gme --disable-sid --disable-ogg --disable-mux_ogg --disable-shout --disable-mkv --disable-mod --disable-mpc --disable-wma-fixed --disable-shine --disable-omxil --disable-iomx --disable-crystalhd --disable-switcher --disable-twolame --disable-quicktime --disable-real --disable-dca --disable-flac --disable-libmpeg2 --disable-vorbis --disable-tremor --disable-speex --disable-opus --disable-theora --disable-dirac --disable-schroedinger --disable-png --disable-x264 --disable-fluidsynth --disable-zvbi --disable-telx --disable-libass --disable-kate --disable-tiger --disable-egl --disable-xcb --disable-xvideo --disable-glx --disable-sdl --disable-sdl-image --disable-macosx-vout --disable-freetype --disable-fribidi --disable-fontconfig --disable-macosx-quartztext --disable-svg --disable-android-surface --disable-ios-vout --disable-aa --disable-caca --disable-pulse --disable-alsa --disable-oss --disable-portaudio --disable-macosx-audio --disable-audioqueue --disable-jack --disable-opensles --disable-samplerate --disable-kai --disable-skins2 --disable-libtar --disable-hildon --disable-qt4 --disable-macosx --disable-macosx-dialog-provider --disable-ncurses --disable-xosd --disable-fbosd --disable-lirc --disable-projectm --disable-atmo --disable-bonjour --disable-udev --disable-mtp --disable-upnp --disable-libxml2 --disable-gnutls --disable-taglib --disable-growl --disable-notify --disable-sqlite --disable-loader --disable-macosx-vlc-app
    make -j2
    make package-win-strip


    四、选项
    mad
    libmad是一个开源mp3解码库,其对mp3解码算法做了很多优化,性能较好


    faad
    一个开源的MPEG-4/MPEG-2 AAC 解码库


    a52
    liba52是一个开源免费的函数库,用于编码ATSC A/52码流


    goom
    The Goom Visualizer displays digital images on your monitor while you play your audio files


    libgcrypt
    一个加密库


    nls
    Native Language Support


    dbus
    dbus-control
    D-BUS是一个设计目标为应用程序间通信的消息总线系统


    telepathy
    Telepathy Presence plugin through DBus


    optimize-memory
    optimize memory usage over performance


    #sout
    #streaming output


    lua
    LUA scripting support


    httpd
    the built-in HTTP server


    libproxy
    提供自动代理配置管理的库


    dc1394
    an access module for IIDC (firewire) cameras


    dv
    DV input module


    linsys
    Linux Linear Systems Ltd. SDI and HD-SDI input cards


    dvdread
    dvdread input module


    dvdnav
    DVD navigation with libdvdnav


    bluray
    libbluray for Blu-ray disc support


    opencv
    OpenCV (computer vision) filter


    smb
    SMB/CIFS support


    sftp
    SFTP file transfer via libssh2


    v4l2
    Video4Linux version 2


    pvr
    PVR V4L2 cards


    decklink
    Blackmagic DeckLink SDI input


    gnomevfs
    GnomeVFS access module


    vcdx
    navigate VCD with libvcdinfo


    vcd
    built-in VCD and CD-DA support


    libcddb
    CDDB for Audio CD


    macosx-eyetv
    Mac OS X EyeTV (TNT Tuner) module


    macosx-qtkit
    Mac OS X qtcapture (video) and qtsound (audio) module


    gme
    Game Music Emu


    sid
    C64 sid(Sound Interface Device) demux


    ogg
    mux_ogg
    一种新的音频压缩格式


    shout
    libshout is a library for streaming audio to icecast or shoutcast-compatible servers


    mkv


    mod
    用于播放mod类音乐格式的开源函数库


    mpc
    Musepack SV7 decoder library


    wma-fixed
    libwma-fixed module


    shine
    shine mp3 encoding module


    omxil
    openmax il codec module


    iomx
    iomx codec module


    crystalhd
    crystalhd codec plugin


    switcher
    Stream-out switcher plugin


    twolame
    MPEG Audio Layer 2 encoder


    quicktime


    real


    dca
    DTS Coherent Acoustics support with libdca


    flac
    libflac decoder/encoder support


    libmpeg2
    libmpeg2 decoder support


    vorbis
    Vorbis decoder and encoder


    tremor
    Tremor decoder support


    speex
    一套主要针对语音的开源免费,无专利保护的音频压缩格式


    opus
    用来在因特网上传输互动的视频和音频的开源免专利费音频编解码器


    theora
    一个免权利金、开放格式的有损图像压缩技术


    dirac
    schroedinger
    Dirac HD Sound是瑞典Dirac Research AB公司开发出的一种先进的专利技术,能通过数字处理对扬声系统进行补偿,通过对声音系统的瞬态响应和频幅响应进行校正,可以使耳机或扬声器达到高保真的性能,使其音乐舞台感、声音清晰度和语音辨识度得到了具体提升,低音更低沉更结实


    png


    x264
    H264 encoding support with libx264


    fluidsynth
    最好的开源midi合成算法


    zvbi
    telx
    Teletext decoding


    libass
    字幕


    kate
    tiger
    kate codec


    egl
    OpenGL support through EGL


    x
    the X Window System(--with-x)


    xcb
    一套以 C语言撰写,并用于绑定(Binding) X Window System之上


    xvideo
    x11环境中独立的实时视频扩展


    glx
    OpenGL support through GLX


    sdl
    sdl-image
    一套开放源代码的跨平台多媒体开发库


    macosx-vout
    Mac OS X video output module


    freetype


    fribidi
    an implementation of the Unicode Bidirectional Algorithm (bidi)


    fontconfig
    字体相关的计算机程序库,用于配置、定制全系统的字体,或将字体提供给应用程序使用


    macosx-quartztext
    Mac OS X quartz text module


    svg
    可缩放矢量图形


    android-surface
    Android Surface video output module


    ios-vout
    iOS video output module


    aa
    把所有的图形转换成ascii码的库


    caca
    一个图形库,可以输出文本而不是像素


    pulse
    一个跨平台的,可通过网络工作的声音服务


    alsa
    support the Advanced Linux Sound Architecture


    oss
    support the Open Sound System OSS


    portaudio
    Portaudio library support


    macosx-audio
    Mac OS X audio module


    audioqueue
    AudioQueue audio module


    jack
    JACK audio I/O modules


    opensles
    Android OpenSL ES audio module


    samplerate
    Resampler with libsamplerate


    kai
    support the K Audio Interface KAI


    skins2
    libtar
    skins interface module


    hildon
    Hildon touchscreen UI


    qt4


    macosx


    macosx-dialog-provider


    ncurses
    字符终端显示


    xosd
    a library for the X11 Windowing System (the windowing system typically used by Unix and Linux machines) that displays text on top of your desktop


    fbosd
    FrameBuffer OSD


    lirc
    一个开放源代码的包。这个包可以让你的Linux系统能够接收及发送红外线信号


    projectm
    一个采用C语言开发的跨平台的高级音效可视化效果软件


    atmo
    AtmoLight (homemade Philips Ambilight clone)


    bonjour
    udev
    mtp
    upnp
    自动发现


    libxml2


    gnutls
    用于实现TLS加密协议的函数库


    taglib
    a library for reading and editing the meta-data of several popular audio formats


    growl
    a notification system for Mac OS X that allows applications that support Growl to send you notifications


    notify
    a library that sends desktop notifications to a notification daemon, as defined in the Desktop Notifications spec


    sqlite


    loader
    build DLL loader for ELF i386 platforms


    macosx-vlc-app
    展开全文
  • MinGW32和64位交叉编译环境的安装和使用原文出处: CompileGraphics Magick, Boost, Botan and QT with MinGW64 under Windows 7 64 http://www.kineticsystem.org/?q=node/191 安装MSYS从下面的地址下载并运行:...

    MinGW32和64位交叉编译环境的安装和使用

    原文出处:

     CompileGraphics Magick, Boost, Botan and QT with MinGW64 under Windows 7 64

     http://www.kineticsystem.org/?q=node/19

    1 安装MSYS

    从下面的地址下载并运行:mingw-get-inst-20120426.exe

    http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/mingw-get-inst-20120426/mingw-get-inst-20120426.exe/download

    按下面的选项和目录位置安装:


     安装完毕之后运行下面的命令行:

    C:\DEVPACK\MinGW\msys\1.0\msys.bat 
    

    逐条输入下面的语句,执行安装软件包:

    $ mingw-get install msys-rxvt
    $ mingw-get install msys-wget
    $ mingw-get install msys-zip
    $ mingw-get install msys-unzip
    $ mingw-get install msys-xz
    右键点击文件C:\DEVPACK\MinGW\msys\1.0\msys.bat,在桌面上创建快捷方式, 并在"msys.bat - 快捷方式" 上点击右键, 按下图修改快捷方式的属性:

     

    2 安装rubenvb MinGW-w64

    1)从下面的链接进入下载页面:

    http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/rubenvb/gcc-4.8-release/

    下载(为64位Windows编译原生64位):

    x86_64-w64-mingw32-gcc-4.8.0-win64_rubenvb.7z

    2)从下面的链接进入下载页面:

    http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/gcc-4.8-release/

    下载(为32位Windows编译,也可以运行在Win64上):

    i686-w64-mingw32-gcc-4.8.0-win64_rubenvb.7z


    包的命名规范是:

    [i686-w64-mingw32]-[gcc-4.8.0]-[win64]_rubenvb

    [目标平台]-[gcc-4.8.0]-[工具链OS]_rubenvb

    目标平台指MinGW最终编译好的二进制代码运行的平台,[i686...]表示Win32平台,[x86_64-...]表示Win64平台。工具链OS表示你安装MinGW的计算机OS。

    例如,如果想在WinXP32位平台上编译运行于Win7 64位平台的程序或库(dll),需要选择:x86_64-w64-mingw32-gcc-4.8.0-win32_rubenvb.7z。

     因为我的机器是64位Win7,因此我选择了上面2个包。解压后得到:

    C:\DEVPACK\MinGW\mingw32\
    C:\DEVPACK\MinGW\mingw64\
    

    另外添加3个目录如下,用于存放特定的工具链:

    C:\DEVPACK\MinGW\opt
    C:\DEVPACK\MinGW\local32
    C:\DEVPACK\MinGW\local64

    修改文件C:\DEVPACK\MinGW\msys\1.0\etc\fstab如下:

    # Win32_Path              Mount_Point
    C:\DEVPACK\MinGW\            /mingw
    C:\DEVPACK\MinGW\mingw32\    /mingw32
    C:\DEVPACK\MinGW\mingw64\    /mingw64
    C:\DEVPACK\MinGW\opt\        /opt
    C:\DEVPACK\MinGW\local32\    /local32
    C:\DEVPACK\MinGW\local64     /local64

    重新打开MSYS命令行工具(以后不特别说明,凡是以$开头的都是指msys-bat命令行MSYS,无$开头指windows命令行cmd),输入下面的命令以创建目录:

    $ mkdir /opt/bin/local{32,64}/{bin,etc,include,lib,share,dst,src}
    $ mkdir /local{32,64}/lib/pkgconfig

    最后的目录结构看起来是下图的样子:

    3 安装CMake

    在下面的地址下载cmake-2.8.10.2-win32-x86.zip,解压到/opt下面。

    http://www.cmake.org/cmake/resources/software.html

    解压后的目录结构如下:

    /opt/bin
    /opt/doc
    /opt/man
    /opt/share

    4 配置32位和64位编译环境

    打开MSYS命令行工具,运行下面的命令创建目录:

    $ mkdir -p /mingw/local/{bin,docs,include,lib,share,src}

    1)为了能分开编译32和64位的程序,为32位编译创建配置文件:/local32/etc/profile.local

    $ cat >/local32/etc/profile.local << "EOF"

    #==================Begin of /local32/etc/profile.local ====================

    alias dir='ls -la --color=auto'
    alias ls='ls --color=auto'
    
    export PKG_CONFIG_PATH="/local32/lib/pkgconfig"
    export CPPFLAGS="-I/local32/include"
    export CFLAGS="-I/local32/include -mms-bitfields -mthreads -mtune=pentium3"
    export CXXFLAGS="-I/local32/include -mms-bitfields -mthreads -mtune=pentium3"
    export LDFLAGS="-L/local32/lib -lpthread -mthreads"
    export PATH=".:/local32/bin:/mingw32/bin:/mingw/bin:/bin:/opt/bin:$PATH"
    export PS1='\[\033[32m\]\u@\h \[\033[33m\w\033[0m\]$ '
    
    export SRC_DIR=/local32/src
    export DST_DIR=/local32/dst
    export MINGW_HOME=/mingw32
    export PKG_CONFIG=$DST_DIR/pkgconfig/bin/pkg-config.exe
    
    # Configure PATH and FLAGS.
    
    APPLICATION_ARRAY=(
    "LIBICONV_PREFIX:$DST_DIR/libiconv"
    "ZLIB_PREFIX:$DST_DIR/zlib"
    "BZIP2_PREFIX:$DST_DIR/bzip2"
    "LIBTOOL_PREFIX:$DST_DIR/libtool"
    "LIBXML2_PREFIX:$DST_DIR/libxml2"
    "LIBPNG_PREFIX:$DST_DIR/libpng"
    "LIBJPEG_PREFIX:$DST_DIR/libjpeg"
    "LIBTIFF_PREFIX:$DST_DIR/libtiff"
    "FREETYPE2_PREFIX:$DST_DIR/freetype2"
    "LCMS2_PREFIX:$DST_DIR/lcms2"
    "FFTW_PREFIX:$DST_DIR/fftw"
    "BOTAN_PREFIX:$DST_DIR/botan"
    "QT_PREFIX:$DST_DIR/qt"
    "OPENCV_PREFIX:$DST_DIR/opencv"
    "LIBUSBX_PREFIX:$DST_DIR/libusbx"
    "LIBFFI_PREFIX:$DST_DIR/libffi"
    "PKGCONFIG_PREFIX:$DST_DIR/pkg-config"
    "GETTEXT_PREFIX:$DST_DIR/gettext"
    "GLIB_PREFIX:$DST_DIR/glib"
    "GMQ8_PREFIX:$DST_DIR/gm-q8"
    "GMQ16_PREFIX:$DST_DIR/gm-q16"
    "IMQ8_PREFIX:$DST_DIR/im-q8"
    "IMQ16_PREFIX:$DST_DIR/im-q16"
    "BOOST_PREFIX:$DST_DIR/boost"
    "LIBUSBX_PREFIX:$DST_DIR/libusbx"
    "GLIB_PREFIX:$DST_DIR/glib"
    "YAFARAY_PREFIX:$DST_DIR/yafaray"
    "SQLITE3_PREFIX:$DST_DIR/sqlite3"
    "LIBTIFF_PREFIX:$DST_DIR/libtiff"
    )
    
    for app in "${APPLICATION_ARRAY[@]}" ; do
    
        KEY=${app%%:*}
        VALUE=${app##*:}
        export "$KEY"="$VALUE"
        
        export PATH="$VALUE/bin:$PATH"
        export LDFLAGS="-L$VALUE/lib $LDFLAGS"
        export CFLAGS="-I$VALUE/include $CFLAGS"
        export CPPFLAGS="-I$VALUE/include $CPPFLAGS"
        export CXXFLAGS="-I$VALUE/include $CXXFLAGS"
        export PKG_CONFIG_PATH="$VALUE/lib/pkgconfig:$PKG_CONFIG_PATH"
    
    done
    
    export LIBFFI_CFLAGS="-I $DST_DIR/libffi/lib/libffi-3.0.11/include"
    export LIBFFI_LIBS="-L$DST_DIR/libffi/lib"
    

    #==================End of /local32/etc/profile.local =====================

    EOF


    2)为64位编译创建配置文件:/local64/etc/profile.local

    $ cat >/local64/etc/profile.local << "EOF"

    #==================Begin of /local64/etc/profile.local ====================

    alias dir='ls -la --color=auto'
    alias ls='ls --color=auto'
    
    export PKG_CONFIG_PATH="/local64/lib/pkgconfig"
    export CPPFLAGS="-I/local64/include"
    export CFLAGS="-I/local64/include -mms-bitfields -mthreads"
    export CXXFLAGS="-I/local64/include -mms-bitfields -mthreads"
    export LDFLAGS="-L/local64/lib -lpthread"
    export PATH=".:/local64/bin:/mingw64/bin:/mingw/bin:/bin:/opt/bin:$PATH"
    export PS1='\[\033[32m\]\u@\h \[\033[33m\w\033[0m\]$ '
    
    export SRC_DIR=/local64/src
    export DST_DIR=/local64/dst
    export MINGW_HOME=/mingw64
    export PKG_CONFIG=$DST_DIR/pkgconfig/bin/pkg-config.exe
    
    # Configure PATH and FLAGS.
    
    APPLICATION_ARRAY=(
    "LIBICONV_PREFIX:$DST_DIR/libiconv"
    "ZLIB_PREFIX:$DST_DIR/zlib"
    "BZIP2_PREFIX:$DST_DIR/bzip2"
    "LIBTOOL_PREFIX:$DST_DIR/libtool"
    "LIBXML2_PREFIX:$DST_DIR/libxml2"
    "LIBPNG_PREFIX:$DST_DIR/libpng"
    "LIBJPEG_PREFIX:$DST_DIR/libjpeg"
    "LIBTIFF_PREFIX:$DST_DIR/libtiff"
    "FREETYPE2_PREFIX:$DST_DIR/freetype2"
    "LCMS2_PREFIX:$DST_DIR/lcms2"
    "FFTW_PREFIX:$DST_DIR/fftw"
    "BOTAN_PREFIX:$DST_DIR/botan"
    "QT_PREFIX:$DST_DIR/qt"
    "OPENCV_PREFIX:$DST_DIR/opencv"
    "LIBUSBX_PREFIX:$DST_DIR/libusbx"
    "LIBFFI_PREFIX:$DST_DIR/libffi"
    "PKGCONFIG_PREFIX:$DST_DIR/pkg-config"
    "GETTEXT_PREFIX:$DST_DIR/gettext"
    "GLIB_PREFIX:$DST_DIR/glib"
    "GMQ8_PREFIX:$DST_DIR/gm-q8"
    "GMQ16_PREFIX:$DST_DIR/gm-q16"
    "IMQ8_PREFIX:$DST_DIR/im-q8"
    "IMQ16_PREFIX:$DST_DIR/im-q16"
    "BOOST_PREFIX:$DST_DIR/boost"
    "LIBUSBX_PREFIX:$DST_DIR/libusbx"
    "GLIB_PREFIX:$DST_DIR/glib"
    "YAFARAY_PREFIX:$DST_DIR/yafaray"
    "SQLITE3_PREFIX:$DST_DIR/sqlite3"
    "LIBTIFF_PREFIX:$DST_DIR/libtiff"
    )
    
    for app in "${APPLICATION_ARRAY[@]}" ; do
    
        KEY=${app%%:*}
        VALUE=${app##*:}
        export "$KEY"="$VALUE"
        
        export PATH="$VALUE/bin:$PATH"
        export LDFLAGS="-L$VALUE/lib $LDFLAGS"
        export CFLAGS="-I$VALUE/include $CFLAGS"
        export CPPFLAGS="-I$VALUE/include $CPPFLAGS"
        export CXXFLAGS="-I$VALUE/include $CXXFLAGS"
        export PKG_CONFIG_PATH="$VALUE/lib/pkgconfig:$PKG_CONFIG_PATH"
    
    done
    
    export LIBFFI_CFLAGS="-I $DST_DIR/libffi/lib/libffi-3.0.11/include"
    export LIBFFI_LIBS="-L$DST_DIR/libffi/lib"
    

    #==================End of /local64/etc/profile.local ======================

    EOF

    3)每次打开msys时,默认采用64位编译环境,因此更改脚本:
    $ cat >> /etc/profile << "EOF"
    if [ -f /local64/etc/profile.local ]; then
            source /local64/etc/profile.local
    fi

    EOF


    如果每次打开msys时,默认想用win32, 则/etc/profile的内容为:

    .....
    if [ -f /local32/etc/profile.local ]; then
      source /local32/etc/profile.local
    fi
    

    4)在MYSYS命令行中使用下面的语句可以在32/64位编译环境之间切换(只对当前窗口有效):

    $ source /local64/etc/profile.local
    $ source /local32/etc/profile.local

    5 编译安装x64库

    5.1 Pkg-config Lite

    pkg-config程序就是向用户向程序提供相应库的路径、版本号等信息的程序。譬如说我们运行以下命令pkg-config 查看gcc的CFLAGS参数:

    $pkg-config --libs --cflags opencv

    会显示如下信息:

    -I/usr/include/opencv -lcxcore -lcv -lhighgui-lcvaux

    这就是用gcc编译连接时CFLAGS的参数。因此当我们需要编译连接某个库时,我们只需把上面那行加入gcc 的参数里面即可。这也是configure的作用,它会检查你需要的包,产生相应的信息。

    下载:pkg-config-lite-0.27.1-1.tar.gz

    地址:http://sourceforge.net/projects/pkgconfiglite/files/0.27.1-1/

    解压到$SRC_DIR:/local64/src

    $ cd $SRC_DIR
    $ tar -zxf pkg-config-lite-0.27.1-1.tar.gz
    $ cd pkg-config-lite-0.27.1-1
    $ sh configure --prefix=$PKGCONFIG_PREFIX
    $ make -j4             # 指定使用4CPU构建,仅仅加速编译过程,不影响最后结果
    $ make install

    按照上面的过程,很顺利我们编译好了64位版本的程序pkg-config。下面继续。

    5.2 编译zlib

    http://zlib.net

    下载:zlib-1.2.8.tar.gz 到$SRC_DIR

    $ source /local64/etc/profile.local
    $ tar -zxf zlib-1.2.8.tar.gz
    $ make -f win32/Makefile.gcc
    $ export "INCLUDE_PATH=$ZLIB_PREFIX/include"
    $ export "LIBRARY_PATH=$ZLIB_PREFIX/lib"
    $ export "BINARY_PATH=$ZLIB_PREFIX/bin"
    $ mkdir -p $ZLIB_PREFIX/bin && cp zlib1.dll $ZLIB_PREFIX/bin/
    $ make -f win32/Makefile.gcc install
    

    5.3 编译libiconv

    这是个字符编码转换库和工具。比如GBK->UTF-8。
    下载libiconv-1.14.tar.gz到$SRC_DIR:
    地址:

    http://ftp.gnu.org/pub/gnu/libiconv/

    运行下面的命令,解压源码包,编译和安装:

    $ tar -zxf libiconv-1.14.tar.gz
    $ cd $SRC_DIR/libiconv-1.14/
    $ sh configure –-prefix=$LIBICONV_PREFIX
    $ make -j4
    $ make install

    同样的办法可以编译win32版本的libiconv:

    $ source /local32/etc/profile.local
    $ tar -zxf libiconv-1.14.tar.gz
    $ cd $SRC_DIR/libiconv-1.14/
    $ sh configure –-prefix=$LIBICONV_PREFIX
    $ make -j4
    $ make install

    5.4 编译LibTIFF

    下载:tiff-4.0.3.tar.gz

    地址:ftp://ftp.remotesensing.org/pub/libtiff/

    解压到:$SRC_DIR (32位是/local32/src, 64位是/local64/src)

    $ tar -zxf tiff-4.0.3.tar.gz
    $ cd $SRC_DIR/tiff-4.0.3/
    $ sh configure –-prefix=$LIBTIFF_PREFIX
    $ make -j4
    $ make install

    5.5 编译Sqlite3

    下载:sqlite-autoconf-3071602.tar.gz

    地址:http://sqlite.org/2013/sqlite-autoconf-3071602.tar.gz

    运行:

    $ tar -zxf sqlite-autoconf-3071602.tar.gz
    $ sh configure --prefix=$SQLITE3_PREFIX
    $ make -j4
    $ make install

    总结一下,编译和安装 YourLib 步骤是:

    3-1)下载库源码包 YourLib.tar.gz 到 $SRC_DIR

    3-2)在/local??/etc/profile.local文件中添加我们要编译的库配置,例如:

    ......
    "SQLITE3_PREFIX:$DST_DIR/sqlite3"
    "YourLib_PREFIX:$DST_DIR/yourlib"
    3-3)运行解压和编译命令:

    $ tar -zxf YourLib.tar.gz
    $ sh configure --prefix=$YourLib_PREFIX
    $ make -j4
    $ make install
    然后就可以把YourLib.dll拷贝到Win32/64系统中使用了。仿照此方法,可以编译其他库。

    6 使用Libiconv的64位版本

    使用MSVS2010创建win32控制台空项目,添加下面的文件main.c。然后更改项目平台为:x64。

    项目属性里面,链接器->高级里面选择:MachineX64 (/MACHINE:X64)。常规->字符集->未设置。经过这样的配置,就可以编译32 / 64位windows程序了。main.c的全部代码如下,可以很好地编译出32位和64位版本:

    /* main.c
     *   using Libiconv 64bits
     * cheungmine
     * 2013-5-13
     */
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <memory.h>
    
    #include <windows.h>
    
    /* x64 */
    #include "C:/DEVPACK/MinGW/local64/dst/libiconv/include/iconv.h"
    
    /* x86-32 */
    #include "C:/DEVPACK/MinGW/local32/dst/libiconv/include/iconv.h"
    
    typedef iconv_t (*def_libiconv_open) (const char* tocode, const char* fromcode);
    typedef size_t (*def_libiconv) (iconv_t cd,  char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);
    typedef int (*def_libiconv_close) (iconv_t cd);
    
    int main (int argc, char **argv)
    {
      size_t ret;
      iconv_t cd, cd2;
      char *inbuf, *in, *outbuf, *out;
      size_t inlen, outlen;
    
      HMODULE hDll;
      def_libiconv_open __iconv_open;
      def_libiconv_close __iconv_close;
      def_libiconv __iconv;
    
      in = (char*) malloc(100);
      strcpy(in, "Hello, 中国!");
      inbuf = in;
      inlen = strlen(in) + 1;
    
      out = (char*) malloc(100);
      *out = 0;
      outbuf = out;
      outlen = 100;
    
      if (sizeof(void*) == 8) {
        printf("build for x64 Windows.\n");
        hDll = LoadLibrary("C:/DEVPACK/MinGW/local64/dst/libiconv/bin/libiconv-2.dll");
      } else {
        printf("build for 32-bits Windows.\n");
        hDll = LoadLibrary("C:/DEVPACK/MinGW/local32/dst/libiconv/bin/libiconv-2.dll");
      }
    
      if (!hDll) {
        printf("DLL not found.\n");
        exit(0);
      }
    
      __iconv_open = (def_libiconv_open) GetProcAddress(hDll, "libiconv_open");
      if (!__iconv_open) {
        printf("libiconv_open not found.\n");
        exit(0);
      }
    
      __iconv = (def_libiconv) GetProcAddress(hDll, "libiconv");
      if (!__iconv_open) {
        printf("libiconv not found.\n");
        exit(0);
      }
    
      __iconv_close = (def_libiconv_close) GetProcAddress(hDll, "libiconv_close");
      if (!__iconv_open) {
        printf("libiconv_close not found.\n");
        exit(0);
      }
    
      cd = __iconv_open("UTF-8", "GBK");
      cd2 = __iconv_open("GBK", "UTF-8");
    
      ret = __iconv(cd, (char**)&in, &inlen, (char**)&out, &outlen);
      printf("GBK(%s) => UTF-8(%s)\n", inbuf, outbuf);
    
      /* now in is utf-8 string */
      in = outbuf;
      inlen = strlen(in)+1;
    
      /* now out is empty */
      *inbuf = 0;
      out = inbuf;
      outlen = 100;
    
      ret = __iconv(cd2, (char**)&in, &inlen, (char**)&out, &outlen);
      printf("UTF-8(%s) => GBK(%s)\n", outbuf, inbuf);
    
      __iconv_close(cd);
      __iconv_close(cd2);
      
      free(inbuf);
      free(outbuf);
      
      FreeLibrary(hDll);
      return 0;
    }
    

    7 总结

    MinGW作为组织开发、持续集成大型Windows项目,充分利用开源软件,的一款极为优秀的交叉编译环境,提供了我们在不同的平台上编译 Windows程序的能力。举例子来说:

    1)x86_64-w64-mingw32-gcc-4.8.0-cygwin_rubenvb.tar.xz

    这个包在Cygwin环境下使用MinGW编译出原生的64位Windows二进制APP(静态库,动态库和可执行程序)。


    2)x86_64-w64-mingw32-gcc-4.8.0-linux64_rubenvb.tar.xz

    这个包在Linux amd64环境下使用MinGW编译出原生的64位Windows二进制APP。


    3)i686-w64-mingw32-gcc-4.8.0-win64_rubenvb.7z

    这个包在Window x64环境下使用MinGW编译出原生的32位Windows二进制APP。


    在我写作此文的过程中,参考了文章开头的链接,但是全部内容并不是简单的翻译,而是我亲自实践的总结。

    谢谢!
    展开全文
  • ubuntu 使用mingw-w64-x86交叉编译windows ffmpeg需要的资源安装环境准备额外需要的工具编译设置关于git http https 代理设置编译完成后的输出说明对于无法直接在ubuntu访问git的情况处理对于已安装高版本的python3 ...

    需要的资源

    (1)交叉编译脚本cross_compile_ffmpeg.sh
    (2)能让你直连下载git的工具

    安装环境准备

    首次运行cross_compile_ffmpeg.sh 会提示需要安装各种依赖包,主要有以下依赖包:

    1. python3>=3.6
    2. meson>=0.49.2
    3. yasm>=1.2.0
    4. cmake>=3.0
    5. 其他提示需要的安装包,我本人测试用的ubuntu5.4,版本很老,还额外安装的很多依赖包(lsb_release等等).

    额外需要的工具

    因为交叉编译脚本cross_compile_ffmpeg.sh 都是使用git curl从项目地址拉取版本使用,因此需要用到直连工具.并且手头需要可用的直连客户端配置信息.

    编译设置

    可以通过 ./cross_compile_ffmpeg.sh --help获取,主要参数是:

    --build-ffmpeg-static=y(默认)
    
    --build-ffmpeg-shared=y
    

    另外对于 编译脚本cross_compile_ffmpeg.sh中,curl 下载失败提示 handshake_failed()
    可以修改 line 664:download_and_unpack_file() 中的

     curl -4 "$url"
    

    curl --socks5 127.0.0.1:10808 -4 "$url" (10808端口是 xxx中默认的socks5转发端口 )
    

    关于git http https 设置

    配置git http https

    sudo git config --global http.proxy socks5://127.0.0.1:10808
    
    sudo git config --global https.proxy socks5://127.0.0.1:10808
    

    取消git http https

    sudo git config --global --unset http.proxy
    
    sudo git config --global --unset https.proxy
    

    编译完成后的输出说明

    (1)static 编译输出目录为:

    /root/ffmpeg-windows-build-helpers/sandbox/win64/ffmpeg_git
    

    (2)shared编译输出目录为

    /root/ffmpeg-windows-build-helpers/sandbox/win64/ffmpeg_git_master_shared
    

    另外还会生成redist压缩包,路径为

    /root/ffmpeg-windows-build-helpers/sandbox/redist
    

    对于无法直接在ubuntu访问git的情况处理

    可以下载压缩包按照脚本设置的文件夹名称,解压到

    /root/ffmpeg-windows-build-helpers/sandbox/win64
    

    例如 libwebp 解压目录名为 libwebp_git

    对于已安装高版本的python3 或者meson仍然提示版本低问题

    我是通过设置 update-alternatives ,将高版本优先设高一点

    update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
    
    update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2
    
    update-alternatives --config python3
    
    

    当前使用python3.8
    meson如果已经安装了仍然提示版本不对可以通过 同样的方法去安装

    meson 安装命令

    pip3 install --user  meson
    

    下载已经编译好的ffmpeg(shared + static)

    FFMpeg4.4_windows_x86_64.zip

    展开全文
  • 一 、MinGW安装 MinGW集成了众多编译器,包括gcc,gcc++...mingw-w64支持32位和64位系统的编译。 直接下载地址:http://sourceforge.net/projects/mingw-w64/?source=recommended 安装完成后,需要将路径 C:\MinGW\m

    一 、MinGW安装

    MinGW集成了众多编译器,包括gcc,gcc++等,官网地址https://sourceforge.net/p/mingw-w64/
    mingw-w64支持32位和64位系统的编译。
    直接下载地址:http://sourceforge.net/projects/mingw-w64/?source=recommended
    安装完成后,需要将路径 C:\MinGW\mingw64\bin 添加到PATH环境变量中。
    此时启动cmd窗口,输入 gcc -v,则可以查看到gcc编译器的版本信息。

    二、MSYS

    下载地址: http://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/
    下载后,解压缩,可看到文件内有msys文件夹,将msys文件夹整体移动到路径 C:\MinGW 下。在msys文件夹内,会看到 msys.bat 文件,双击则启动MSYS,在MSYS中则可使用UNIX下的命令行,如make。

    ps.
    MinGW内存在make.exe,而MSYS内也存在make.exe(C:\MinGW\msys\bin),那么当在MSYS内输入make命令时,调用的到底是那个make.exe?使用which make命令即可。

    VS2013编译可参考资源:http://www.njliaohua.com/lhd_21wh64s0sr9nplw1m1xb_1.html




        
    展开全文
  • 下载mingw需要的文件:64位 包括 具体可以参见mingw官方网站:http://mingw-w64.org/doku.php 注意下载mingw的依赖软件包 解压全部文件到一个文件夹,例如:/mydata 导出库目录到环境变量: 将解压的...
  • ubuntu16下,先要安装mingw sudo apt-get install mingw-w64 ...做交叉编译时要指定toolchain文件Toolchain-mingw.cmake# 设置交叉编译的目标操作为windows SET(CMAKE_SYSTEM_NAME Windows)# 指定c/c+
  • libuv之mingw64环境搭建及编译Libuv

    千次阅读 2017-05-16 17:32:50
    MinGW64可用于x86_64(既可64bits也可32bits),还支持32位,64位交叉编译。 ---- 现在用这个的比较多 2.下载MinGW64 https://sourceforge.net/projects/mingw-w64 下载下来的也是一个安装器,所以都需要网络,如果...
  • 1 构建MinGW编译环境 下载MinGw工具(本人使用的mingw-w64-build-3.6.7) 使用步骤 1.chmod +x mingw-w64-build-3.6.7 2../mingw-w64-build-3.6.7 按照提示进行填写即可 下载地址1 下载地址2 2设置path路径 ...
  • libcurl是一个跨平台的、易用的、强大的网络库。在大部分Linux发行版中都有编译好的二进制包可供使用,Mac系统更是将其作为了一个核心...STEP1 安装MinGW编译器  大部分Linux发行版的仓库应该都有,以我的ArchLin...
  • 64位CentOS7交叉编译64位windows程序

    千次阅读 2018-02-28 21:34:09
    1、下载并安装epel-release-7-11.noarch.rpm2、运行sudo yum install mingw64-gcc-c++.x86_64安装交叉编译工具3、x86_64-w64-mingw32-g++ -std=gnu++14 -Wall -Wextra -O3 helloCross.cpp -o helloCross.exe编译...
  • 一、配置编译环境. (1)操作系统 :Windows10 (64bit). (2)类unix环境:Cygwin(64bit) 下载路径:https://www.cygwin.com/setup-x86_64.exe。 (3)安装Cygwin ,注意:为防止有API Hook的行为导致 Cygwin出现异常,请在...
  • 该图像为Windows目标提供了易于使用的交叉编译。 它也是CI友好的。 包括mingw-版本的Qt5,cmake,Eigen3,boost。 Dosens可从程序包管理器中获得。 目录 用法 启动Docker容器: sudo docker run -it ...
  • nokogiri-1.6.6.2-x64-mingw32.gem ...)交叉编译的宝石(感谢nokogiri团队!) 出于礼貌而发布,以备不时之需。 只需将其安装为系统中的本地gem,就可以使用。 YMMV。 响应nokogiri问题1256和用户请求::
  • 编译器:x86_64-w64-mingw32-g++ shell:windows powershell, cmd, linux shell 文件:linux下文件地址 /home/descosmos/cpp/test.cpp 通过linux访问windows桌面: cd /mnt/c/User/kingsoft/Desktop 事件还原 在...
  • 1. 配置软件源 本地源: baseurl=file:///media/cdrom/BaseOS baseurl=...双击即可看到下面的界面 PS: centos8搭建nsis交叉编译环境,参见另一篇文章:https://blog.csdn.net/hbuxiaofei/article/details/105995059
  • 编译期间,碰到的两个大问题,是环境变量设置问题. 先列出执行脚本是碰到的两个问题,后面给出解决方法并记录执行的命令步骤. 问题1: 编译binutils 2.5出错 ------------------------------ 错误信息: make...
  • centos6 安装交叉编译器 mingw32

    千次阅读 2016-10-23 22:56:11
    yum install mingw32-gcc 安装后 在/usr/bin/i686-w64-mingw32-gcc ,后面就是利用它进行编译
  • 甚至还支持32位和64位的交叉编译(启用multilib支持的MinGW发行版例如mingw-builds可以用-m32或-m64指定)。 显然,W64和支持的架构无关。上面i686就不是64位的平台(而且可以看出这里的32也和架构没关系)。支持64...
  • linux交叉编译npapi-vlc1.下载依赖包和安装依赖$ sudo apt-get install -y gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-tools $ sudo apt-get install -y lua5.2 libtool automake autoconf autopoint make ...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 137
精华内容 54
关键字:

交叉编译mingw64