使用Visual Studio让cmake在Windows上构建x86的一种方法是这样的:
cmake -G "NMake Makefiles" \path_to_source\使用Visual Studio让cmake在Windows上构建x64的一种方法是这样的:
cmake -G "NMake Makefiles" \path_to_source\使用Cmake,我如何编译其中一个或两个架构?(就像Visual Studio在IDE中的表现一样)
我有一个Python脚本,我想编译成Windows可执行文件.现在,py2exe从Windows工作正常,但我希望能够从Linux运行它.我做的是Windows我的开发机器上,但Linux是我的主要开发平台,我得到一种重新启动进入Windows刚刚创建的生病的.exe.我也不想购买第二个Windows许可证以在VirtualBox等虚拟机中运行.有任何想法吗?
PS:我知道py2exe没有完全编译python文件,就像使用Python解释器打包脚本一样.但无论哪种方式,结果都是您不需要安装Python来运行脚本.
在Windows上,我使用CodeSourcery的交叉编译器套件为ARM/Linux交叉编译程序.我使用MinGW MSYS作为我的命令解释器,并且经常会破坏我的路径和路径名.例如,为了构建我的程序,我调用了
arm-none-linux-gnueabi-gcc.exe -Wall -g \
-Wl,--dynamic-linker=/usr/lib/myrpath/ld-linux.so.3 \
-Wl,-rpath=/usr/lib/myrpath \
-I../targetsysroot/usr/include \
myprogram.c -o myprogram
Run Code Online (Sandbox Code Playgroud)
当然,我想/usr/lib/myrpath逐字插入myprogram可执行文件 - 我正在编译的ARM Linux目标不使用MinGW或MSYS.但是这里最终会涉及到它:
...
0x0000000f (RPATH) Library rpath: [C:/MinGW/msys/1.0/lib/myrpath]
...
Run Code Online (Sandbox Code Playgroud)
不完全是我想要的.如果我直接在cmd.exe命令行上调用GCC,我会在可执行文件中获得正确的rpath.如果我在MSYS命令行上调用GCC,我会得到损坏的rpath.如果我使用从cmd.exe命令行使用make运行的Makefile调用GCC,我仍然会得到一个受损的rpath(!)
我有什么想法可以关闭这种烦人的行为?
TL/DR:我在哪里可以找到有关为ARM(gnueabi)平台(旨在在Raspberry Pi设备上运行)构建GCC 4.7.0交叉编译工具链的更多信息?
我刚买了一个全新的Raspberry Pi,我非常渴望为它开始编程.我已经设法安装了GCC工具链(我正在使用Arch Linux系统映像)并编译了一些基本程序,一切正常.
我也尝试编译Boost库,因为我经常在我的项目中使用它们,一切似乎都按照说明(./bootstrap.sh+ ./b2)工作正常,除了编译速度很慢的事实.我把它放了几个小时,但它几乎没有超过前几个源文件.在我让它运行过夜之后,我发现构建过程由于RAM短缺而中止.
所以,我的猜测是,Rasp Pi的功能不足以编译像Boost这样大小的东西.所以,我想到了交叉编译.但是,即使有很多关于ARM在线交叉编译的信息,我觉得它很混乱.一个人甚至从哪里开始?
我最近在我的Raspberry Pi上有一个GCC版本(4.7.0),所以我想要用相同的版本进行交叉编译.哪里可以获得ARM的GCC 4.7.0工具链?(我将在x86 CentOS 6.2上编译)
编辑:
我释放了不需要的GPU内存并在USB驱动器上设置了4GB交换分区,而构建文件在NFS共享上.Boost现在编译得更快,因此它是可管理的.我仍然想知道如何在我的x86 PC上设置GCC 4.7工具链进行交叉编译,因为我打算做很多编译,我希望它尽可能快.
编辑2:
由于GCC 4.7.0相对较新,似乎没有预先构建的交叉编译器(i386-> ARM).我可能不得不自己构建一个,这似乎是一个非常重要的任务(我已经尝试过并且失败了).有没有人知道要建立GCC交叉编译器的教程,希望是最近的版本之一?
我已经尝试过这个很棒的shell脚本(它非常适合构建同一个arch编译器)并且我已经成功构建了binutilsGCC的先决条件,但是GCC构建仍然失败了很多神秘的错误.我真的迷失在这里,所以我非常感谢你的帮助.
Raspberry Pi上的GCC配置了
--prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib
--mandir=/usr/share/man --infodir=/usr/share/info
--with-bugurl=https://bugs.archlinux.org/
--enable-languages=c,c++,fortran,lto,objc,obj-c++ --enable-shared
--enable-threads=posix --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-clocale=gnu
--disable-libstdcxx-pch --enable-libstdcxx-time
--enable-gnu-unique-object --enable-linker-build-id --with-ppl
--enable-cloog-backend=isl --enable-lto --enable-gold
--enable-ld=default --enable-plugin --with-plugin-ld=ld.gold
--with-linker-hash-style=gnu --disable-multilib --disable-libssp
--disable-build-with-cxx --disable-build-poststage1-with-cxx
--enable-checking=release --host=arm-unknown-linux-gnueabi
--build=arm-unknown-linux-gnueabi
Run Code Online (Sandbox Code Playgroud)
编辑3:
我设法使用这个shell脚本为ARM构建一个4.7 GCC工具链(yay!),如用户dwelch在评论中所建议的那样.我还构建newlib并libstdc++使用本文作为指南.工具链工作正常,但是我在我的Raspberry Pi上运行可执行文件,它失败了Illegal instruction …
如果我做对了,GOOS确定编译源代码时.
为了更好地支持多个操作系统,我对GOOS可能的内容感兴趣.
当然,它可能有无限的可能性,因为Go是开源的.所以我真正想要的是一个"共同列表".
已知值为:
windowslinuxdarwin或freebsd或unix?我知道其中至少有一个必须存在.我正在尝试为一个android编译ffmpeg.我找到了几个关于这个主题的帖子,但是这些帖子似乎没有用.如果尝试构建ffmpeg,就像发布在[1]上一样.有没有人使用这些教程成功编译ffmpeg?我不知道如何实现第4步到第5步.
第4步:配置......
第5步:cd到你的NDK根目录,输入make TARGET_ARCH = arm APP = ffmpeg-org
在我看来,在步骤5的教程中解释构建类似的应用程序需要一些先前的步骤.不幸的是我在文件夹中没有应用程序.我正在使用当前的android ndk版本3并检查了[3]和[4]中的实际ffmpeg版本.我很感谢你的每一个建议.
[1] http://slworkthings.wordpress.com/
[2]http://gitorious.org/~olvaffe/ffmpeg/ffmpeg-android
[3]http://ffmpeg.org/download.html
在找到为目标机器生成拟合配置文件的方法之后,仍然必须构建交叉编译器本身.如果主机和目标系统差异太大,那么使用这里描述的1 1/2构建的方法(以及更多细节,这里)似乎不起作用.这是构建脚本的更改部分(可以使用获得$ svn cat svn://svn.psellos.com/trunk/ocamlxarm/3.1/xarm-build)
# Small steps
config1 () {
# Configure for building bytecode interpreter to run on Intel OS X.
# But specify * architecture for assembly and partial link.
echo 'xarm-build: ----- configure phase 1 -----'
./configure \
-prefix "" \
-no-curses \
-no-tk \
-no-graph \
-as "" \
-aspp ""\
-partialld ""
# Post-modify config/Makefile to select the * back end for
# ocamlopt (to generate …Run Code Online (Sandbox Code Playgroud) 我创建了一个交叉编译的arm可执行文件.我想找到可执行文件的库依赖项.我正在使用ubuntu natty并安装了arm-linux-gnueabi工具链,它不包含ldd.有没有一个工具可以在linux中查看arm可执行文件库的依赖性.
是否有任何用户友好的工具可以从Windows交叉编译到Linux?
是否有从Linux到Windows交叉编译C++应用程序的手册?
只是.我想要一些信息(链接,参考,例子......)来指导我这样做.
我甚至不知道是否可能.
我的目标是在Linux中编译一个程序并获得一个我可以在Windows下运行的.exe文件.