Cygwin+gcc构建Windows下类Unix开发平台(1)
- 格式:pdf
- 大小:890.14 KB
- 文档页数:8
一、前言Google Android发布了NDK,引起了很多发人员的兴趣。
NDK全称:Native Development Kit,官方下载地址:/sdk/ndk/index.html1.NDK是什么The Android NDK is a toolset that lets you embed components that make use of native code in your Android applications.Android applications run in the Dalvik virtual machine. The NDK allows you to implement parts of your applications using native-code languages such as C and C++. This can provide benefits to certain classes of applications, in the form of reuse of existing code and in some cases increased speed.英语不好的,自己GOOGLE吧。
简而言之,NDK就是一套基于C和C++底层开发API的集成工具组件,使用NDK开发编译的应用程序同样可以基于虚拟机Dalvik上“疯跑”。
如果你问为啥推出NDK,敝人以为C和C++开发的应用程序其卓越性能不用提了,至少C和C++被反编译的可能性降低了很多,要比JAVA安全保密多了。
2.ANDROID NDK 带来了什么a)一套工具,基于本机编译的C和C++源代码库。
b)一种部署在ANDROID设备上,可以将so和java一起打包成APK的方法。
c) A set of native system headers and libraries that will be supported in all future versions of theAndroid platform, starting from Android 1.5. Applications that use native activities must be run onAndroid 2.3 or later.(自个理解吧,最好别用GOOGLE,我试过了不是人话。
Cygwin的安装配置Cygwin的安装比较简单,步骤如下:1.先从官方网站或其它镜像网站下载一个Cygwin的网络安装程序,通常叫:setup.exe,文件很小。
2.运行下载到本地的Cygwin网络安装程序,它会以导航方式来帮你下载/安装Cygwin中的软件,在导航页的第一页会显示这个安装程序的版本号。
3.接下来,安装程序有3个安装方式的选择:∙Install from Internet:此为先从网上下载Cygwin软件包,再安装。
这些软件包在安装后仍保留,不删除,为了以后再次使用。
如果你第一次使用Cygwin,之前没有下载过Cygwin的软件包,就使用这个安装方式,安装完之后,下次安装(比如:重装系统后、或在其它机器上安装)时,就可以使用这些已下载的安装包。
∙Download Without Installing:此为只从网上下载Cygwin软件包,但不安装。
∙Install from Local Directory:此为使用本地目录中已下载的Cygwin软件包来安装软件。
4.选择Cygwin的安装路径,这个路径也是Cygwin安装完成后,它所模拟的Linux环境的根目录(RootDirectory)。
5.选择Cygwin软件包的下载保存路径,安装完后,可以备份这个路径下的软件包,以备下次安装。
6.指定从哪个Cygwin的镜像站点下载软件包,选择一个速度最快的地址。
在中国,这个镜像站点的速度还可以,如果列表中没有的地址,可以手动加入地址:/pub/,然后选择它。
7.选择需要下载/安装的软件包。
点击软件包选择界面上的View按钮,可以以:软件包分类、全部软件包、最新软件包、没有安装的软件包等方式显示软件包列表。
在Search后的可以键入想要下载/安装的软件包名字,然后再从软件包列表中选择。
有4个对软件包版本下载/安装的全局设置:∙Keep:表示保持已安装的软件包的版本不变。
∙Prev:表示安装上一个稳定版本的软件包。
Cygwin使用cygwin使用心得1.在cygwin里访问Windows盘cd /cygdrive/ccd c:2.整合cygwin命令到Windows中假设cygwin安装在d:/develop/cygwin,则将d:/develop/cygwin/bin添加到系统变量PATH 中(最好加在windows前面,这样的话,有些相同的命令的话,是先执行cygwin的命令,而不是windows命令,比如find)就可以直接在cmd.exe下面执行tar czvf xxx.tgz ./基本上所有的命令都可以用了,包括ls,more,less,find,grep等。
3.使用TGZ备份将cygwin的BIN加入到PATH建一个BAT文件:@echo offd:cd d:\website\8thmanagetar czvf 8thmanage.tgz 8thmanage4.Windows使用SHELL脚本将cygwin的BIN加入到PATH在$CYGWIN的目录/var/下面建一脚本t.sh,注意,t.sh里面的路径,都是相对于$CYGWIN 的,里面需要访问C盘的,请用/cygdrive/c/在Windows下执行:d:\cygwin\bin\bash d:\cygwin\var\t.sh(可以定期执行)5.同步Windows系统用户mkpasswd -l > /etc/passwdmkgroup -l > /etc/group如果有Domain的话,需要加上-d domainname6.安装系统服务cygrunsrv7.cygwing下使用rsynca.安装rsync组件b.进入cygwin,配置服务器vi /etc/rsyncd.conf...screts file=/etc/tom.ipaddr.pas配置文件,参考我写的另外一篇rsync的文章,注意:密码文件权限必须是0400chmod 0400 /etc/tom.ipaddr.pasc.启动服务端rsync --daemond.客户端同步在客户端的cygwin下面,运行rsync同步,具体命令,请参考另外一篇rsync的文章。
windows下swoole安装教程1)下载安装cygwin(根据操作系统选择32位或者64位):选择在windows中虚拟环境的root⽬录选择下载安装的⽹络节点,如果选择的节点状况不好,可以另选别的节点。
下⾯选择要安装的包,没有全部选择安装不要点击“下⼀步”(2)gcc-core(3)php、php-devel(两者版本要相同)(4)autoconf(5)pcre-devel(6)make(7)安装openssl、openssl-devel(8)都选择完成后点击下⼀步会出现安装进程,因为使⽤⽹络节点安装,所以可能会有安装中断或者缓慢的情况,关闭重新打开应⽤换⼀个节点继续安装就可以。
选择安装完成后在桌⾯⽣成快捷⽅式。
(9)下载swoole安装包:并解压到cygwin的安装⽬录(在步骤1中有选择cygwin的root⽬录)解压后如图:(10)打开cygwin应⽤(11)编译安装swoole扩展(swoole解压的⽂件夹名字视实际情况⽽定)cd /swoole-src-1.9.14/phpize./configure --enable-opensslmakemake install(12)make install 之后会⽣成extension的路径(该路径在步骤14中使⽤)(13)查找php.ini路径: php -i | grep php.ini(该⽂件路径在步骤14中使⽤)(14)将extension= /usr/lib/php/20151012/swoole.so 添加到/etc/php.ini⽂件中,保存修改。
(15) php -m 查看是否已经有了swoole扩展,如果有,则说明安装成功。
linux gcc编译win32程序如何通过Linux GCC编译Win32程序在跨平台开发中,有时候我们可能需要在Linux操作系统上编译Windows 平台的程序。
虽然Windows和Linux是两种截然不同的操作系统,但是通过使用GCC编译器和一些工具,我们仍然可以完成这个任务。
在本文中,我将向您展示一步一步使用Linux GCC编译Win32程序的过程。
请按照以下步骤进行操作。
步骤1:安装GCC编译器首先,确保您的Linux系统中已经安装了GCC编译器。
如果没有安装,可以通过以下命令在终端中进行安装:shellsudo apt-get install build-essential这条命令将会安装GCC编译器以及相关的开发工具。
步骤2:安装MinGW工具链MinGW是一个在Windows上运行的开发工具链集合,可以用来编译Windows平台的可执行文件。
我们将在Linux上使用MinGW工具链来编译Windows程序。
您可以通过以下命令在终端中进行安装:shellsudo apt-get install mingw-w64这条命令将会安装MinGW工具链。
步骤3:创建Win32交叉编译环境现在,我们需要为GCC编译器创建一个Win32交叉编译环境。
在终端中运行以下命令:shellsudo update-alternatives config x86_64-w64-mingw32-gcc该命令将显示一个列表,列出了可用的编译器版本。
选择与您的系统架构相对应的gcc版本。
按照提示进行选择。
步骤4:编写Win32程序在准备好编译环境后,我们可以开始编写Win32程序。
创建一个C语言源文件,比如"hello.c",并输入以下代码:c#include <windows.h>#include <stdio.h>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCEhPrevInstance, LPSTR lpCmdLine, int nCmdShow) {MessageBoxA(NULL, "Hello World!", "Hello", MB_OK);return 0;}这是一个简单的Win32程序,用于显示一个消息框。
Cygwin使用指南下载:1. 下载、运行安装向导文件一开始的下载方法,了解Cygwin的人都知道:就是到: 中先当个安装向导文件setup.exe,这个是Cygwin的官方下载安装向导文件,而且也只能通过它才能正确下载最新的Cygwin版本(为何?稍后有说明)。
setup.exe下载完毕,双击运行,程序安装向导界面如下图所示:点击“下一步”继续,准备选择Cygwin的安装方式。
2. 选择安装方式如上图所示,一共有三种安装方式:(1)Install from Internet:直接从Internet上下载并立即安装(安装完成后,下载好的安装文件并不会被删除,而是仍然被保留,以便下次再安装)。
(2)Download Without Installing:只是将安装文件下载到本地,但暂时不安装。
(3)Install from Local Directory:不下载安装文件,直接从本地某个含有安装文件的目录进行安装。
强烈建议选择第(2)项,以便于能够手工指定安装路径。
然后再点击”下一步“。
3. 设置安装文件的本地存储路径由于我们选择的是直接下载的安装方式,所以必需指定好一个本地下载文件存储目录。
安装目录所在的驱动器剩余空间必须足够(若要完全下载,至少需要600M以上的空间)。
设置好后,点击“下一步”。
4. 选择连接方式如上图所示,共有三种连接方式选择:(1)Direct Connection:直接连接。
(2)Use IE5 Settings:使用IE的连接参数设置进行连接。
(3)Use HTTP/FTP Proxy:使用HTTP或FTP代理服务器进行连接(需要输入服务器地址和端口号)。
用户可根据自己的网络连接的实情情况进行选择,一般正常情况下,均选择第一种,也就是直接连接方式。
然后再点击“下一步”。
5. 选择下载站点经过一番搜索,安装向导为我们列出了众多可用的下载镜像站点以供选择,有HTTP的也有FTP的。
cygwin编译python在Cygwin环境中编译Python可能会涉及一些复杂的步骤,因为Cygwin是一个在Windows平台上运行的类Unix环境,而Python通常是为Unix和类Unix系统设计的。
以下是一般的步骤:1. 安装Cygwin,首先,你需要确保已经在你的系统上安装了Cygwin。
你可以从官方网站下载安装程序,并根据指示进行安装。
2. 安装所需的软件包,在Cygwin中,你需要安装一些额外的软件包来支持Python的编译和运行。
你可以使用Cygwin的包管理工具来安装这些软件包,例如gcc(用于编译)、make(用于构建)和其他开发工具。
3. 下载Python源代码,接下来,你需要从Python官方网站下载所需版本的Python源代码。
确保下载的版本与你的Cygwin环境兼容。
4. 解压源代码,将下载的Python源代码解压到你选择的目录中。
5. 配置和编译,在Cygwin终端中,导航到解压后的Python源代码目录,并运行"./configure"命令来配置Python的编译选项。
然后,运行"make"命令来编译Python源代码。
6. 安装,一旦编译完成,你可以运行"make install"命令来安装Python到你的Cygwin环境中。
需要注意的是,由于Cygwin和Python之间的差异,可能会遇到一些问题和挑战。
在编译过程中可能会出现依赖性问题或者与Cygwin环境不兼容的情况。
因此,在实际操作中可能需要进行一些调整和解决问题。
总的来说,在Cygwin环境中编译Python可能会比较复杂,需要一定的经验和技术知识。
如果你只是想在Cygwin环境中运行Python,建议直接通过Cygwin的包管理工具安装预编译的Python 软件包,而不是自己编译。
Cygwin ,gcc 的使用(一)很多用windows 的朋友不习惯于用linux 的开发环境。
虽然很乐意尝试一下,但是往往怕linux 系统打乱了自己的正常生活: 1 〉装linux 系统把windows 系统给搞坏了,导致自己无法正常生活;2>linux 开发上手太难,写出第一个helloworld 不亚于java 的难度,环境配置摸不着头脑。
对于此,我的看法是:路不管平还是陡,终归你要走的,如果你愿意投入到linux 开发的社群中来,不会安装linux 系统,不会配置工作环境是不能想象的。
( 事实上,确实要了解很多东西的原理,不然很难排错:诸如,硬盘引导器的引导原理、分区结构原理及linux 分区结构和文件系统、环境变量的设置、种类繁多的压缩包安装包的解压安装方法、用户管理权限管理等常用命令、以至于驱动安装系统中文化等等异常琐碎的东东) 。
本文试图跳过这个难走的步骤,启用一个win 环境下的linux 仿真器(和linux 下面的命令行开发环境基本一致),用短短的20 分钟的时间,教你做出一个纯正的linux 下gcc 编译的helloworld 。
就象是买点心前先尝尝味道,不也是一件很愉快的事情么?( 注:cygwin 事实上不仅有此模拟功能,它也是移植unix<-->win 程序的一个很有效的工具,也有人用它来做嵌入式系统开发)一、cygwin 是什么?这个问题你最好google 一下"cygwin 的历史", 或许能够获得更为详尽的答案。
简而言之,cygwin 是一个在windows 平台上运行的linux 模拟环境,是cygnus solutions 公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos ,不过现已被Redhat 收购)。
插一句废话,很多朋友不明白linux 和unix 的区别和联系,在此也简要介绍一下。
UNIX 是一个注册商标,是要满足一大堆条件并且支付可观费用才能够被授权使用的一个操作系统;linux 是unix 的克隆版本,是由其创始人Linus 和诸多世界知名的黑客手工打造的一个操作系统。
win平台下的Cygwin安装GCC安装 GCC安装 GCC 最快捷的方式是在你的机器上安装完整的 Cygwin 环境。
Cygwin 是视窗系统上类似于 Linux 的环境。
他包括一个提供 UNIX 功能性基本子集的DLL 及在这之上的一组工具。
安装好 Cygwin 之后,通常能忽略他,即使你是命令行的爱好者,你仍能发现你活得更舒坦了。
确保你具有相当快速的 Internet 连接。
GCC 编译器及相关实用程式大约有 50 兆字节。
另外确认你的连接是否需要一个代理服务器。
这可通过你的 Internet 浏览器选项:工具 -> Internet 选项 ->连接 ->局域网(LAN)设置来确定。
确保在你的管理员帐户下安装这个程式,并选择为“所有用户”安装。
将你的 Internet 浏览器指到。
在屏幕的中心是个黑绿两色组成的“C” 徽标,标题是“Install or update now.”。
在该链接上点击,这将下载一个小程式 setup.exe(250KB)。
这个安装程式将在你的机器上引导 Cygwin 环境的安装或更新过程。
运行安装程式将 setup.exe 下载到一个已知地方,如桌面,然后运行他。
他将打开安装向导,如下图所示:图 1. Cygwin 环境的安装向导点击Next按钮。
选择下载位置在这个页面上,选择"Install from Internet"。
图 2. 选择安装类型点击Next按钮。
选择一个安装目录在这个页面上,选择执行 Cygwin 所在的目录。
设置图3所示的剩余选项。
图 3.选择一个安装目录点击Next按钮。
选择一个临时安装目录在这个页面(图4),为安装包选择一个临时目录。
当 Cygwin 安装完成后,你能删除这个目录和他的内容。
注意安装程式记住了这个目录,并在更新时只下载比这个目录中的包更新的版本。
如果你删除这个目录并重新安装,setup将重新安装你选择的所有内容而不管这些包的安装程式在运行目录中已存在。
Eclipse+Cygwin+gcc构建Windows下类Unix开发平台/thread-1265089-1-1.html这两天突发奇想,Eclipse的CDT能够构建C开发平台,Cygwin可以模拟Unix环境,为什么不结合使用,构建一个在Windows下开发Unix程序的IDE平台呢?说干就干,立刻上网查了一些资料,确实已经有很多人已经有过一些研究。
感谢前人的栽树,让我有好大的阴凉,哈哈。
不过在实践过程中,还是发现有一些需要注意的地方,为防止大家也走这些弯路,我把自己的一些经验总结一下,以飨大家。
首先,下载Cygwin环境,可以在下载最新的版本,不过网上好像都是提供的网络安装版。
下载之后,执行安装,注意到选择安装部件的时候,选择开发包的安装,如下图所示:装完之后,设置一下环境变量,把Cygwin的bin目录加到Path环境变量中。
至此,Cygwin已经安装完毕。
然后,安装CDT插件,可以直接在Eclipse网站上下载单独的Eclipse CDT套装,也可以直接下载CDT插件安装到原有的Eclipse目录下,需要注意的是CDT版本和Eclipse版本必须对应,否则加载插件不成功(没试过,或许也有兼容性,不过Eclipse网站上提示需要版本对应)。
CDT插件安装完之后,能够在Eclipse的Preferences上看到C/C++的配置,这表明,安装插件成功。
现在,已经可以在Eclipse里面开发C/C++项目了,神奇吧。
下面讲几个有用的经验。
1、自己编写makefile文件CDT把很多操作都搞得比较自动化,默认情况下,它会自动生成两个目标目录,Debug和Release,在这两个目录下,都会生成相应的makefile文件。
比较恼火的是,你没有办法改它,修改完之后,又会恢复成原来的内容。
实际上,只需要把下面这个Generate Makefile automatically 的check打勾去掉,我们就可以自由的修改makefile了。
2、如何在makefile中加载动态库很多实际的工作不可能像Hello World这么简单,有很多工程我们都需要加载一些其他的库文件,比如操作Oracle数据库,我们需要链接oci库,在unix上,我们用-lclntsh,VC工程中用oci.dll,那么Cygwin中怎么使用呢?这时候,就需要一个工具pexports,用它来做一些辅助操作,使得Windows下的Dll能够为Cygwin的Gcc 使用。
Pexports下载地址/software/cygwin/pexports-0.43/moron1.html使用下面方法处理dll文件$ pexports.exe filename.dll > filename.def$ dlltool.exe --dllname filename.dll --def filename.def --output-lib libfilename.a3、如何进行调试调试实际上非常简单,直接用eclipse的Debug As,选择Local C/C++ Application。
但是,可能会提示找不到代码。
这时候,你只需要做一件事情,目录映射。
在Prefrences窗口中找到C/C++的Debug配置,有一个Common Source Lookup Path增加一个类型为Path Mapping的设置,Eclipse+Cygwin+GCC+Boost 使用Asio的环境配置Eclipse+Cygwin+GCC+Boost 使用Asio的环境配置作者:smartvessel@例子取自Boost的文档#include<boost/asio.hpp>#include<boost/date_time/posix_time/posix_time.hpp>using namespace std;using namespace boost;int main() {boost::asio::io_service io;boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));t.wait();std::cout <<"Hello, world!\n";return 0;}问题1:gcc报需要__USE_W32_SOCKETS,同时我在Boost的文档上发现需要加上预编译__USE_W32_SOCKETS。
问题是我自己敲”_ USE_W32_SOCKETS”,折腾了一两个小时,没发现错误。
这里非常奇怪的,为什么使用”__”?问题3: 报一系列的/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_iterator.hundefined reference to `_send@16'undefined reference to `WSAStartup@8'undefined reference to `_inet_addr@4'undefined reference to `_htons@4'undefined reference to `_connect@12'需要加gcc预编译ws2_32。
原因是boost.asio运行在windows的环境下,实际也封装了winsock,所有gcc 编译的时候需要这个预编译。
这个问题类似于mingw使用winsock。
问题2:Linker需要库文件libboost_date_time.a, libboost_system.a, libboost_program_options.a警告:需加上预编译_WIN32_WINNTEclipse的设置如下:1.Cygwin C++ Compiler->Preprocessor2. Cygwin C++ Linker->Libraries3. Cygwin C++ Linker->Miscellaneous在eclipse和cygwin环境下使用winpcap的开发包环境的搭建其实很简单,将winpcap开发包的lib文件夹里的文件拷贝到cygwin目录下的lib文件夹中,将include 文件夹中的文件拷贝到cygwin的/usr/include中即可。
然后在eclipse中正常建立C工程,在build的选项里把"-l"选项加上“wpcap”,如果用到发包函数可能还需要加上“wsock32”,对应gcc里的"-lwpcap“ ”-lwsock32"。
然后正常编译就可以了。
具体设置如下图:来自: /5shuang/blog/item/a437c46276b147d8e6113ae4.htmlcygwin和eclipse CDT安装好了后不能使用cygwin编译先安装了cygwin在path中加入cygwin\bin安装eclipse CDT 7.0打开eclipse -> new project创建hello world 后使用build报如下问题**** Build of configuration Default for project test ******** WARNING: The "Default" Configuration may not build ******** because it uses the "cdt.managedbuild.toolchain.gnu.cygwin.base" **** **** tool-chain that is unsupported on this system. ******** Attempting to build... ****(Cannot run program "make": Launching failed) 注:在windows的命令行下可用Eclipse+Cygwin+GCC+Boost 使用Asio的环境配置文章分类:C++编程Eclipse+Cygwin+GCC+Boost 使用Asio的环境配置作者:smartvessel@例子取自Boost的文档#include<boost/asio.hpp>#include<boost/date_time/posix_time/posix_time.hpp>using namespace std;using namespace boost;int main() {boost::asio::io_service io;boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));t.wait();std::cout <<"Hello, world!\n";return 0;}问题1:gcc报需要__USE_W32_SOCKETS,同时我在Boost的文档上发现需要加上预编译__USE_W32_SOCKETS。
问题是我自己敲”_ USE_W32_SOCKETS”,折腾了一两个小时,没发现错误。
这里非常奇怪的,为什么使用”__”?问题3: 报一系列的/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_iterator.hundefined reference to `_send@16'undefined reference to `WSAStartup@8'undefined reference to `_inet_addr@4'undefined reference to `_htons@4'undefined reference to `_connect@12'需要加gcc预编译ws2_32。
原因是boost.asio运行在windows的环境下,实际也封装了winsock,所有gcc编译的时候需要这个预编译。
这个问题类似于mingw使用winsock。
问题2:Linker需要库文件libboost_date_time.a, libboost_system.a, libboost_program_options.a警告:需加上预编译_WIN32_WINNTEclipse的设置如下:1.Cygwin C++ Compiler->Preprocessor2. Cygwin C++ Linker->Libraries3. Cygwin C++ Linker->Miscellaneous。