导航:首页 > 源码编译 > mingw编译git源码

mingw编译git源码

发布时间:2022-11-01 11:04:41

⑴ GIT变性液是什么它是什么的缩写

Git
维基网络,自由的网络全书跳转到: 导航, 搜索
Git
原作者 Linus Torvalds
开发者 Junio Hamano, Linus Torvalds
稳定版本 1.6.5.7

/ 2009年12月17日;10个月前 (2009-12-17)
预览版本 1.6.6.rc3

/ 2009年12月17日;10个月前 (2009-12-17)
编程语言 C,Bourne Shell,Perl[1]
操作系统 POSIX
类型 版本控制
许可协议 GNU通用公共许可证 版本二
网站 http://git-scm.com/

Git 是一个由林纳斯·托瓦兹为了更好地管理linux内核开发而创立的分布式版本控制/软件配置管理软件。需要注意的是和GNU Interactive Tools,一个类似Norton Commander界面的文件管理器相区分。

Git最初的开发动力来自于BitKeeper和Monotone[2][3]。 Git最初只是作为一个可以被其他前端比如Cogito 或 StGIT[4]包装的后端而开发的。不过,后来Git内核已经成熟到可以独立地用作版本控制[5]。很多有名的软件都使用Git来进行版本控制[6],其中有Linux内核,X.Org服务器和OLPC (OLPC) 内核开发。[7]

目录 [隐藏]
1 命名来源
2 主要功能
3 早期历史
4 实现原理
5 移植性
6 使用
6.1 使用Git的专案
7 相关条目
8 参考文献
9 外部链接

[编辑] 命名来源
林纳斯·托瓦兹自嘲地取了这个名字"git"。在英式英语中指一个愚笨或者不开心的人。[8]

“ I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git. ”

Git的官方维基也给出了多种其他的关于名字的解释。[9]

[编辑] 主要功能
Git --- The stupid content tracker, 傻瓜内容跟踪器。Linus 是这样给我们介绍 Git 的。

Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。

实际上内核开发团队决定开始开发和使用 Git 来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是 Git 太艰涩难懂,从 Git 的内部工作机制来说,的确是这样。但是随着开发的深入,Git 的正常使用都由一些友好的脚本命令来执行,使 Git 变得非常好用,即使是用来管理我们自己的开发项目,Git 都是一个友好,有力的工具。现在,越来越多的着名项目采用 Git 来管理项目开发,例如:wine, U-boot 等,详情看 http://www.kernel.org/git

作为开源自由原教旨主义项目,Git 没有对版本库的浏览和修改做任何的权限限制,通过其他工具也可以达到有限的权限控制,比如:gitosis, CodeBeamer MR。原本 Git的使用范围只适用于 Linux / Unix 平台,但逐步并成熟了在 Windows 平台下的使用,主要归功于Cygwin与msysgit环境与TortoiseGit这样易用的 GUI 工具。其实 Git 的源代码中已经加入了对 Cygwin 与 MinGW 编译环境的支持并被逐步完善,对于 Windows 使用者是个福音。

[编辑] 早期历史
早期Linux的开发人员是使用 BitKeeper 来管理版本控制和维护程式码。2005年的时候,开发 BitKeeper 的公司同 Linux 内核开源社区结束合作关系,并收回使用BitKeeper的权利。Torvalds 开始着手开发Git 来替代BitKeeper。

[编辑] 实现原理
Git 和其他版本控制系统(CVS)有不小的差别,Git 本身关心档案的整体性是否有改变,但多数的CVS,或Subversion 系统则在乎档案内容的差异。因此Git 更像一个档案系统,直接在本机上取得资料,不必连线到host端取资料回来。

[编辑] 移植性
在Windows 平台上有msysgit与tortoisegit可资利用。tortoisegit 还提供有UI。

⑵ minGW使用方法

基本用法在后面给你加上了
MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。详情请参考<http://www.mingw.org>。
这里的“纯粹”是指“使用msvcrt.dll的应用程序”。无法使用MFC (Microsoft Foundation Classes)。
MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时库。
MinGW,即 Minimalist GNU For Windows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC(GNU Compiler C)产生 Windows32 程序。
在基本层,MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时间库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95 发行版以上的 Windows OS 有效,使用基本运行时间,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时间扩展。该功能是 Windows32 API 不具备的。下一个组成部分是 w32api 包,它是一组可以使用 Windows32 API 的包含文件和端口库。与基本运行时间相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 Windows32 API 功能。
MinGW 官方网站为 http://www.mingw.org
实际上 MinGW 并不是一个 C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC (GNU 编译器集合) 以外,MinGW 还包含有一些其他的 GNU 程序开发工具 (比如 gawk bison 等等)。
开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人提供一套符合 GNU 的 GNU 工作环境。
(此前的 cygwin 虽然也是 GNU 的 Windows 移植,但是 cygwin 是有版权的,而不是 GNU。)
所以,使用 MinGW 我们就可以像在 Linux 下一样使用 GNU 程序开发工具。
GCC 就是 MinGW 的核心所在,GCC 是一套支持众多计算机程序语言的编译系统,而且在语言标准的实现上是最接近于标准的。并且 GCC 几乎可以移植到目前所有可用的计算机平台。(我的电脑上就还装有 DevKitPro,里面包含 GCC 的 ARM(for GBA/DS/GP32) 和 MIPS(for PSP) 版本。)
GCC 本身不像 VC 那样拥有 IDE 界面(在 Windows 上也存在 Dev C++ 之类的支持 MinGW 编译器的 IDE)。源代码编辑你可以选用任何你喜欢的文本编辑器(据说微软的开发人员包括 VC 的开发都不用 VC 所带的 IDE 编辑器,而是选用 GNU 的 VIM 编辑器)。然后使用 make 等工具来进行软件项目的编译、链接、打包乃至发布。而像 cvs(svn) 源代码版本控制工具可以让世界上任何一个角落的人都可以参与到软件项目中来。
关于 MFC,微软基础库类,这个随 VC++ 携带的一个源代码公开的开发包,和其他 Windows 程序开发包是一样的。如果有 VC++ 的授权,你完全可以使用 MFC 的源代码,也就是你使用 GCC 来编译 MFC 程序是完全可以的。
当然,GNU 下也很多 Windows 程序开发包,甚至有一些是支持跨平台使用的。不仅仅可以直接把源代码编译为 Windows 程序,也可以不经修改编译为其他操作系统的图形程序。
不过 GNU 下,最流行的图形界面开发库是 GTK+。GTK+ 也能很好的运行在 Windows 平台(比如 GIMP 和 Gaim)。
总体说来,使用 MinGW 就是 GNU。

基本用法:
在mingw环境中生成和使用dll都是十分方便的。
1.生成dll
gcc(g++) -shared -o test.dll test.c(test.cpp)
通过该命令生成test.dll,将导出test.c中非静态的函数和相关的类。

(注by asper:该命令行在处理jni涉及的dll时无效)
我使用微软C++编译器,cl命令对带有空格的路径也是无效的,需要用""括住

2.连接dll到exe中
mingw使用dll的方式和静态库.a的方式是一样的,连接的时候只需要加上-ltest即可,没有lib前缀的要求。
3.编写jni调用的dll
有办法了! 是gcc少了行参数。 如下:
gcc -I%JAVA_HOME%\include -I%JAVA_HOME%\include\win32 -Wl,--add-stdcall-alias -shared -o call.dll call.c
参数:-Wl,--add-stdcall-alias 可以为函数加上标准调用前缀(stdcall @nn)。
这样编译出的dll就可以了。都知道win32中dll中的函数要求有标准调用前缀,在JNI中不方便手动处理这个,Sun又没说清楚这事由编译器办。所以搞得我很郁闷。找了大半个月,终于在一个很古老的网页上找到答案。

基本上和VC的界面差不多 学习C语言用的最多的还是VC++ 6.0

⑶ 如何用codeblocks+mingw-w64编译器编译glew库

1、下载codeblocks16.01
选第一个codeblocks-16.01-setup.exe,这个是纯IDE不带编译器。
2、下载mingw-w64
文件:mingw-w64-install.ex
3、安装codeblocks,mingw-w64
codeblocks安装参数:我把他安装在d:盘。D:\Program Files (x86)\CodeBlocks
打开安装文件codeblocks-16.01-setup.exe,然后一路点NEXT,在安装路径选择你喜欢的地方,最后点finish结束。

mingw-w64安装参数:
版本version:5.3.0,一般选最新的。(截止2016年04月20号5.3.0是最新的版本)
架构Achitecture:x86_64,win系统都是此架构,选这个x86_64可以编译64位程序,i686只能编译32位。
线程Threads:选posix,posix跨平台。
异常处理Exception:seh。调试用。
build version:0.

安装位置:我的安装位置:D:\MinGW\mingw64

我的安装位置:

点NEXT,等待安装结束。

二、在IDE:codeblocks中配置mingw-w64编译器,使之能编译最简单的c程序在cmd窗口即控制台打印出“你好!”
1、打开codeblocks,设置编译器位置。(告诉IDE编译器在哪里)。
settings-弹出菜单第三行compiler setting(编译器设置)。

点蓝色框选择mingw-w64安装位置里的mingw文件夹,编译器位置就设置好了。
可以编译最简单的程序了。

文件夹里有各种编译器。

主要是要交叉编译程序。我在64位系统可以编译出32位系统能运行的程序。

扩展:在cmd里使用mingw32-make编译程序:
先添加mingw-w64安装文件的bin地址到系统path环境变量里。
复制mingw-w64bin文件夹到path里。

计算机-属性-高级系统设置-环境变量-path,注意添加英文标号“;”。

三、最简单的程序。
1、file-new-project-empty project(空项目)

参数如下:
我项目的位置放在D:\CodeBlocks工程下。

点finish完成。

什么都没有,别急,先去看看工程文件夹发生了什么。

建立工程之前,什么都没有:

建立之后,且工程未添加文(里面只有项目文件.cbp,没有源代码文件):

2、为项目添加源代码文件。
files-new-files

这里键入源代码文件名。

⑷ mingw内联汇编传参瞎传

intel64位寄存器

新出64位寄存器R8~R15


R12D是R12的低32位

R12W是R12的低16位

R12B是R12的低8位


好像宽度不足,可以复制出来到notepad就能看清楚

【64位REX(WR0B)+ModR/M编码的扩展有效寻址】
══════════════════════════════════════════════════
r8(/r)
r16(/r)
r32(/r)
r64(/r)R8R9R10R11R12R13R14R15
mm(/r)
xmm(/r)
(十进制)/digit(Opcode)89101112131415
(二进制)REX.R+REG=
──────────────────────────────────────────────────
[Mod][REX.B+R/M]ModR/M
──────────────────────────────────────────────────
[R8][00][1000]0008101820283038
[R9][1001]0109111921293139
[R10][1010]020A121A222A323A
[R11][1011]030B131B232B333B
[-][-][1100]040C141C242C343C
disp32[1101]050D151D252D353D
[R14][1110]060E161E262E363E
[R15][1111]070F171F272F373F
──────────────────────────────────────────────────
[R8]+disp8[01][1000]4048505860687078
[R9]+disp8[1001]4149515961697179
[R10]+disp8[1010]424A525A626A727A
[R11]+disp8[1011]434B535B636B737B
[-][-]+disp8[1100]444C545C646C747C
[R13]+disp8[1101]454D555D656D757D
[R14]+disp8[1110]464E565E666E767E
[R15]+disp8[1111]474F575F676F777F
──────────────────────────────────────────────────
[R8]+disp32[10][1000]80889098A0A8B0B8
[R9]+disp32[1001]81899199A1A9B1B9
[R10]+disp32[1010]828A929AA2AAB2BA
[R11]+disp32[1011]838B939BA3ABB3BB
[-][-]+disp32[1100]848C949CA4ACB4BC
[R13]+disp32[1101]858D959DA5ADB5BD
[R14]+disp32[1110]868E969EA6AEB6BE
[R15]+disp32[1111]878F979FA7AFB7BF
──────────────────────────────────────────────────
R8/R8D/R8W/R8B/MM8/XMM8[11][1000]C0C8D0D8E0E8F0F8
R9/R9D/R9W/R9B/MM9/XMM9[1001]C1C9D1D9E1E9F1F9
R10/R10D/R10W/R10B/MM10/XMM10[1010]C2CAD2DAE2EAF2FA
R11/R11D/R11W/R11B/MM11/XMM11[1011]C3CBD3DBE3EBF3FB
R12/R12D/R12W/R12B/MM12/XMM12[1100]C4CCD4DCE4ECF4FC
R13/R13D/R13W/R13B/MM13/XMM13[1101]C5CDD5DDE5EDF5FD
R14/R14D/R14W/R14B/MM14/XMM14[1110]C6CED6DEE6EEF6FE
R15/R15D/R15W/R15B/MM15/XMM15[1111]C7CFD7DFE7EFF7FF
══════════════════════════════════════════════════

⑸ 有一个库的源代码,怎么用mingw编译产生成lib

mingw编译出来的静态库后缀名为.a,编译出来的动态库的导入库后缀名为.dll.a,而在windows下后缀名为.lib的库可能是静态库也可能是动态库的导入库。

mingw编译出来的动态库的导入库可以直接在vc中直接使用,例如

#pragma comment(lib, "libx264.dll.a")

这样你就不需要生成一个.lib后缀的动态库的导入库了,网上也有如何从.dll生成.lib的方法。

如果链接了动态库的导入库libpthread.dll.a,你发布的应用程序就要带上pthread的dll。
使用静态库的好处是发布的应用程序组件模块里不需要带上相关的dll,如果要使用mingw编译出来的静态库,可以如下:

#pragma comment(lib, "libx264.a")

但是仅仅链接这么一个静态库是不够的,你还需要链接

libgcc.a

libmingwex.a

⑹ mingw w64源码怎么编译

应该是先安装MSYS,再安装mingw , 在mingw文件夹里面应该有个bin文件夹 ,留意一下该文件夹里面“应该”有gcc.exe的应用程序,假设该bin文件夹的全称路径是X:\..\mingw\bin,那么将它添加将它添加到环境变量里面。

⑺ windows下源码编译执行 $ ./configure $ make

这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。所以严格来讲windows环境下是不支持该系列指令的,需要在linux或类linux环境下执行。
希望采纳,谢谢

⑻ 关于mingw

MinGWStudio完整安装后有78M大小比起Vc6+DDK要小很多,而且MinGWStudio安装目录下的MinGW\include\ddk\目录里有一个叫ntapi.h的头文件,里面包括了很多未公开的函数原型及数据结构,感觉很爽啊!还有一个更爽的地方呢!那就是MinGW可以混用Windows XP SDK和DDK头文件却不会出现任何错误,在VC6中只能用namespace来解决这个问题,但MinGW里直接include头文件就行了,用户态程序可以使用用户态可用的未公开函数,记得引入ntdll.a库文件.

精简的IDE,简单的代码完成功能,没有向导,纯手工写代码.怎么看怎么觉得这东西适合Eva,呵呵!

用QuickSys向导了一个空的驱动框架HelloDrv,只改了一行代码:
#include "ntddk.h"
改成
#include "ddk\ntddk.h"

就可以毫不费力的用gcc编译成KMD
D:\wjj\vcwork\hellodrv>gcc -o HelloDrv.obj -O3 -c HelloDrv.c

D:\wjj\vcwork\hellodrv>ld HelloDrv.obj --subsystem=native --image-base=0x10000 --file-alignment=0x1000 --section-alignment=0x1000 --entry=_DriverEntry -nostartfiles -nostdlib -L E:\MinGWStudio\MinGW\lib -l ntoskrnl -o HelloDrv.sys

由于gcc支持C99标准,可以使用动态数组以及随处定义局部变量,虽然同样是用C程序来写驱动,但其实却比VC要灵活很多.另外gcc的代码优化能力相信不用我多说.

没有想到脱离Visual Studio也可以写SDK和DDK程序.开源组织里真的有很多好东东啊!gcc包里的Pascal编译器gpc可以支持Object Pascal,支持AT&T Inline Asm,支持直接使用MMX/SSE/SSE2数据类型及指令,写游戏都没有问题.比起Delphi的编译器dcc32真的是要强到哪里去了,只是没有人知道.
努力......

⑼ git的MINGW64可以编译c++吗

当然可以。
输出gcc -v
或g++ -v
看看输出。

⑽ Windows下如何编译火狐源码啊,我电脑上安装了mingw+qt以及vs2013,要如何编译啊,具体步骤是什么啊

您好!很高兴为您答疑。
关于此类开发问题,敬请登录火狐社区与广大爱好开发者进行交流。
如果对我们的回答存在任何疑问,欢迎继续问询。

阅读全文

与mingw编译git源码相关的资料

热点内容
安卓系统下的软件怎么移到桌面 浏览:78
windows拷贝到linux 浏览:751
mdr软件解压和别人不一样 浏览:886
单片机串行通信有什么好处 浏览:320
游戏开发程序员书籍 浏览:843
pdf中图片修改 浏览:270
汇编编译后 浏览:474
php和java整合 浏览:830
js中执行php代码 浏览:442
国产单片机厂商 浏览:57
苹果手机怎么设置不更新app软件 浏览:286
转行当程序员如何 浏览:494
苹果id怎么验证app 浏览:865
查看手机命令 浏览:953
抖音反编译地址 浏览:227
如何加密软件oppoa5 浏览:235
java从入门到精通明日科技 浏览:98
拆解汽车解压视频 浏览:599
新版百度云解压缩 浏览:593
android上下拉刷新 浏览:882